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.

This page walks you through a complete Artemis installation on Ubuntu 14.04 Trusty Tahr. It covers system requirements, preparing your environment, running the installer, configuring the run.ini symlink, setting up local DNS, and rebuilding the application after code changes.
The install scripts only support Ubuntu 14.04 Trusty Tahr on an amd64 architecture. The installer explicitly rejects any other Ubuntu release or CPU architecture. Running Artemis on an EOL operating system in production carries security risk. The project recommends using a Docker image of Trusty Tahr on a modern host system to limit exposure.

System requirements

  • OS: Ubuntu 14.04 Trusty Tahr (nothing older, nothing newer)
  • Architecture: amd64 only (required by pre-built packages and the live-update ID generation)
  • RAM: 2 GB minimum (the installer will warn and prompt you to confirm if less is available)
  • Privileges: Must be run as root via sudo; running directly as the root user is not supported — a named non-root user must own the install
Run Artemis inside a Docker image of Ubuntu 14.04 on a modern host rather than on a bare-metal Trusty system. Two Docker images are provided for the websocket and activity services; the same containerisation approach can protect the rest of the stack.

Before you begin

1

Create a non-root user

The installer requires a named non-root user. It reads this from $SUDO_USER automatically when you run the script with sudo, or you can set it explicitly:
sudo ARTEMIS_USER=youruser ./install/artemis.sh
2

Create /home/src

The installer expects the source tree to live under a src directory in the user’s home folder. Create it before running the installer:
sudo mkdir -p /home/src
sudo chown youruser /home/src
If you want a different location, set ARTEMIS_SRC before running the installer.
3

Clone the repository

Place the contents of this repository into your source directory. The installer also clones several companion repositories automatically, but it needs the main repo present to locate the install scripts:
git clone https://github.com/artemis-development-group/artemis.git /home/src/artemis

Running the installer

The top-level entry point is install-artemis.sh. Run it as superuser from the repository root:
sudo ./install-artemis.sh
Internally this script downloads any missing install sub-scripts and then delegates to artemis/install/artemis.sh. You can override configuration variables inline:
sudo ARTEMIS_DOMAIN=mysite.local ARTEMIS_PLUGINS="about gold" ./install-artemis.sh
The installer performs the following steps in order:
1

Sanity checks

Verifies root privileges, confirms the OS is Ubuntu 14.04 on amd64, and checks for at least 2 GB of RAM.
2

Discover available plugins

Scans $ARTEMIS_SRC for each directory listed in $ARTEMIS_PLUGINS. Plugins that are not present on disk are skipped with a warning.
3

Install apt packages

Adds the DataStax Cassandra repository, the reddit PPA, and then installs all required system packages via install_apt.sh. This includes Python libraries, Node.js build tools, nginx, haproxy, gunicorn, and more.
4

Install Cassandra and Zookeeper

Runs install_cassandra.sh and install_zookeeper.sh to install those services from their respective repositories.
5

Install supporting services

Runs install_services.sh to install mcrouter, memcached, PostgreSQL, RabbitMQ, haproxy, nginx, gunicorn, and Redis. Waits for memcached (11211), PostgreSQL (5432), and RabbitMQ (5672) to become reachable before continuing.
6

Clone source repositories

Clones artemis/artemis, artemis/artemis-i18n, artemis/artemis-service-websockets, and artemis/artemis-service-activity into $ARTEMIS_SRC if they are not already present. Upstart configs from each repo’s upstart/ directory are copied to /etc/init/.
7

Configure services

Runs setup_cassandra.sh, setup_postgres.sh, setup_mcrouter.sh, and setup_rabbitmq.sh to create databases, users, keyspaces, and apply runtime configuration to each service.
8

Install Python packages

Runs python setup.py develop --no-deps for artemis/r2, i18n, any discovered plugins, websockets, and activity.
9

Build static files and generate ini

Runs make clean pyx inside $ARTEMIS_SRC/artemis/r2, creates development.update with your domain and plugin list (if not already present), and generates development.ini by running make ini.
10

Create run.ini symlink

Creates a run.ini symlink pointing at development.ini (if no symlink exists yet). See post-install configuration to switch this to production.ini.
11

Install helper scripts and configure nginx/haproxy

Installs artemis-run, artemis-shell, artemis-start, artemis-stop, artemis-restart, artemis-flush, and artemis-serve into /usr/local/bin/. Writes nginx and haproxy configurations and restarts both services.
12

Start Upstart services

Emits artemis-stop and then artemis-start via initctl to bring up all registered Upstart jobs, including the websocket and activity services.
13

Install cron jobs

Writes /etc/cron.d/artemis with scheduled tasks for promotions, trending content, search, and other background work.

Post-install configuration

Configuring run.ini

The application reads its runtime configuration from $ARTEMIS_SRC/artemis/r2/run.ini, which is a symlink. The installer creates it pointing at development.ini. For a production deployment, update the symlink to point at production.ini:
ln -nsf development.ini /home/src/artemis/r2/run.ini
development.ini enables the Pylons debug stacktrace page and disables ads, captchas, rate limiting, and admin OTP. Do not use this on a publicly accessible server — the stacktrace allows remote code execution.

Setting up the hosts file

Artemis defaults to the domain artemis.local. Add an entry to your host machine’s /etc/hosts file (or the hosts file of the machine you browse from) to resolve this name to the server’s IP:
127.0.0.1   artemis.local
Then navigate to http://artemis.local in your browser.
The domain you use must contain at least one dot (.). Browsers refuse to set cookies for dotless hostnames. If you do not have a proper domain, an IP address works — for example, setting ARTEMIS_DOMAIN=192.168.1.100 is valid.

Rebuilding after code changes

Static files in $ARTEMIS_SRC/artemis/r2/r2/public/static take effect immediately without a rebuild. For all other changes, you need to rebuild and restart:
cd /home/src/artemis/r2
sudo make
sudo artemis-restart
artemis-restart emits the artemis-restart Upstart event, which triggers a restart of all registered Artemis services. You can restart a single named service by passing its name:
sudo artemis-restart websockets

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