Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/artemis-development-group/artemis/llms.txt

Use this file to discover all available pages before exploring further.

Artemis installation and runtime behaviour is controlled by a small set of shell variables defined in artemis/install/install.cfg and by the INI configuration files generated inside the r2/ directory. This page documents every variable, its default, and its effect.

install.cfg variables

These variables are read by all install scripts. You can override any of them by setting them in your environment before calling the installer:
sudo ARTEMIS_DOMAIN=forum.example.com ARTEMIS_PLUGINS="about gold" ./install-artemis.sh

ARTEMIS_USER
string
default:"$SUDO_USER"
The system user that owns the installed code and runs the Artemis processes. Defaults to the value of $SUDO_USER, which is the user that invoked sudo. You must not run Artemis as root; if $SUDO_USER is empty the installer exits with an error.
sudo ARTEMIS_USER=artemisdev ./install-artemis.sh
ARTEMIS_GROUP
string
default:"nogroup"
The system group under which Artemis processes run. The group must already exist on the system before the installer is run. The default nogroup is suitable for development installs.
sudo ARTEMIS_GROUP=www-data ./install-artemis.sh
ARTEMIS_HOME
string
default:"/home/$ARTEMIS_USER"
The root directory for the installation. Must exist before the installer runs. Consumer count files and the job environment config (/etc/default/artemis) reference this path.
ARTEMIS_SRC
string
default:"$ARTEMIS_HOME/src"
The directory into which all source repositories are cloned. The installer creates this directory if it does not exist, then clones artemis, artemis-i18n, artemis-service-websockets, and artemis-service-activity into it.
sudo ARTEMIS_SRC=/opt/artemis ./install-artemis.sh
ARTEMIS_DOMAIN
string
default:"artemis.local"
required
The hostname that users will use to reach the Artemis instance. This value is written into development.update (and therefore into the generated development.ini) as both domain and oauth_domain. It is also used by the nginx and haproxy configurations.The domain must contain at least one dot. Browsers will not set cookies for dotless hostnames. An IP address satisfies this requirement.
# Valid examples
sudo ARTEMIS_DOMAIN=artemis.local ./install-artemis.sh
sudo ARTEMIS_DOMAIN=forum.example.com ./install-artemis.sh
sudo ARTEMIS_DOMAIN=192.168.1.50 ./install-artemis.sh
If your domain does not contain a dot, cookie-based authentication will not work. Users will be unable to stay logged in.
ARTEMIS_PLUGINS
string
default:"about gold"
A space-separated list of plugin names to install. The installer checks for a directory matching each plugin name under $ARTEMIS_SRC. Plugins that are not found on disk are skipped. Each plugin must follow the Artemis plugin naming and directory conventions.The about and gold plugins are the standard plugins included with a default installation.
sudo ARTEMIS_PLUGINS="about gold myplugin" ./install-artemis.sh
After the main code is installed, if a plugin directory contains a setup.sh script, the installer runs it automatically, passing $ARTEMIS_SRC and $ARTEMIS_USER as arguments.
APTITUDE_OPTIONS
string
default:"-y"
Options passed to every apt-get install call during installation. The default -y answers “yes” to all prompts automatically, which is required for unattended installs. Set to an empty string to enable interactive prompts.

Plugin configuration

The two standard plugins are about and gold. Both must be cloned into $ARTEMIS_SRC before the installer runs for them to be picked up. Plugin names are written into the generated INI files as a comma-separated list on the plugins key:
plugins = about,gold
This list is re-read each time make ini is run. If you add or remove a plugin after installation, update development.update and regenerate the INI:
# Edit development.update to update the plugins line, then:
cd /home/src/artemis/r2
sudo -u youruser make ini
sudo artemis-restart

INI configuration files

File roles

FileRole
development.updateHand-editable source file. Edit this to change domain, plugins, debug flags, or any other setting.
development.iniGenerated from development.update by make ini. Do not edit directly.
production.iniA separate INI with production-safe defaults (debug disabled, etc.).
run.iniA symlink. The application always reads this file. Point it at either development.ini or production.ini.

Switching between environments

# Development
ln -nsf development.ini /home/src/artemis/r2/run.ini

# Production
ln -nsf production.ini /home/src/artemis/r2/run.ini

development.update settings

The installer creates development.update with the following content if it does not already exist:
# after editing this file, run "make ini" to
# generate a new development.ini

[DEFAULT]
# global debug flag -- displays pylons stacktrace rather than 500 page on error when true
# WARNING: a pylons stacktrace allows remote code execution. Make sure this is false
# if your server is publicly accessible.
debug = true

disable_ads = true
disable_captcha = true
disable_ratelimit = true
disable_require_admin_otp = true

domain = artemis.local
oauth_domain = artemis.local

plugins = about,gold

media_provider = filesystem
media_fs_root = /srv/www/media
media_fs_base_url_http = http://%(domain)s/media/

[server:main]
port = 8001
debug = true causes the Pylons stacktrace page to be shown on application errors. This page allows remote code execution. Always set debug = false before exposing the server to the internet.
After editing development.update, regenerate the INI and restart:
cd /home/src/artemis/r2
sudo -u youruser make ini
sudo artemis-restart

Domain requirements

The domain and oauth_domain values in the INI must contain a dot. This is not just a convention — browsers enforce it at the cookie level. Valid options:
domain = artemis.local
oauth_domain = artemis.local
Add 127.0.0.1 artemis.local to /etc/hosts on the client machine.

Job environment

The installer writes /etc/default/artemis with the following environment variables that are sourced by job scripts:
export ARTEMIS_ROOT=/home/src/artemis/r2
export ARTEMIS_INI=/home/src/artemis/r2/run.ini
export ARTEMIS_USER=youruser
export ARTEMIS_GROUP=nogroup
export ARTEMIS_CONSUMER_CONFIG=/home/youruser/consumer-count.d
alias wrap-job=/home/src/artemis/scripts/wrap-job
alias manage-consumers=/home/src/artemis/scripts/manage-consumers
Consumer counts are controlled by files in $ARTEMIS_CONSUMER_CONFIG. Each file is named after a queue (e.g. vote_link_q) and contains a single integer representing how many consumer processes to run. Set a value to 0 to disable a consumer entirely.

Security disclaimer

Artemis does not make any claims about the security or reliability of this software and is not liable if you are compromised. Portions of this code and assets are © 2005–2015 reddit Inc. If you discover a vulnerability, contact artemis@cocaine.ninja for assistance or ethical disclosure.

Build docs developers (and LLMs) love