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 configuration happens at two stages: before installation (via shell variables that install.cfg reads) and after installation (by editing the generated *.update files and regenerating *.ini files). This page covers both, starting with the variables you need before you run artemis.sh.

Pre-install variables

These variables are defined in artemis/install/install.cfg and can be overridden as environment variables passed to the install script. For example:
sudo ARTEMIS_USER=youruser ARTEMIS_DOMAIN=forum.example.com /home/src/artemis/artemis/install/artemis.sh
VariableDefaultDescription
ARTEMIS_USER$SUDO_USERThe system user that owns and runs the Artemis processes. Must not be root. Required — the script exits if this is unset.
ARTEMIS_GROUPnogroupThe system group that Artemis processes run as. Must already exist on the system.
ARTEMIS_HOME/home/$ARTEMIS_USERBase directory for the install. Used to derive ARTEMIS_SRC if that is not set explicitly.
ARTEMIS_SRC$ARTEMIS_HOME/srcDirectory where repositories are cloned. The installer creates this directory if it does not exist.
ARTEMIS_DOMAINartemis.localThe domain name Artemis will be served from. Must contain a . — browsers do not set cookies for dotless hostnames. An IP address works if no domain is available.
ARTEMIS_PLUGINSabout goldSpace-separated list of plugin names to install. Each plugin must be a directory present in $ARTEMIS_SRC that follows the plugin naming convention.
ARTEMIS_USER has no default when you run the script directly as root (i.e., when $SUDO_USER is empty). Create a dedicated user and set this variable explicitly:
useradd -m artemis
sudo ARTEMIS_USER=artemis ./artemis.sh

Default plugins

The default value of ARTEMIS_PLUGINS installs two plugins:
  • about — Provides the /about page and related informational routes for the instance.
  • gold — Adds the Gold subscription and gilding system, including the /gold purchase flow and /api/v1/gold/ API endpoints.
To skip a plugin, set ARTEMIS_PLUGINS to an empty string or list only the plugins you want:
sudo ARTEMIS_USER=youruser ARTEMIS_PLUGINS="" ./artemis.sh
Plugins that are listed in ARTEMIS_PLUGINS but whose directories are not found in $ARTEMIS_SRC are silently skipped at install time.

INI files and run.ini

The installer generates configuration files in /home/src/artemis/r2/:
FilePurpose
development.updateEditable source file for development settings. Run make ini after editing to regenerate development.ini.
development.iniGenerated Paste configuration for development. Has debug = true, ads disabled, captcha disabled, and rate limiting disabled.
production.iniGenerated Paste configuration for production. Has debug = false and all safety features enabled.
run.iniSymlink pointing to either development.ini or production.ini. The app always reads run.ini.
The installer creates run.ini pointing to development.ini by default. Switch to production mode by updating the symlink:
ln -nsf /home/src/artemis/r2/production.ini /home/src/artemis/r2/run.ini
sudo artemis-restart

development.update reference

The development.update file is generated by the installer with sensible defaults. Edit it to change domain, plugin list, or any [DEFAULT] INI key, then regenerate:
cd /home/src/artemis/r2
sudo -u youruser make ini
A freshly generated development.update looks like this:
[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
Never set debug = true on a publicly accessible server. The Pylons debug page that appears on unhandled exceptions exposes a Python REPL that enables remote code execution.

Environment variables set at runtime

The installer writes /etc/default/artemis with these environment variables, which are sourced by init scripts and background job consumers:
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
Edit this file if you need to change paths after installation (for example, if you move the source tree).

Build docs developers (and LLMs) love