Skip to content

Configuration

After installing Arctyk ITSM using Docker, configure environment variables, database connections, and integrations before launching in production. This guide covers .env, docker-compose.yml, secure deployment, and automated documentation updates.

Environment Variables

Arctyk ITSM uses a .env file located in the project root /Arctyk/.env to manage configuration. This file is automatically loaded when running:

docker compose up -d

Here’s an example .env configured for the default Arctyk ITSM stack:

# ─── General Settings ─────────────────────────────
DEBUG=False
SECRET_KEY=your-strong-secret-key
ALLOWED_HOSTS=yourdomain.com,docs.arctyk.dev

# ─── Database Configuration ───────────────────────
DB_NAME=arctyk
DB_USER=arctyk
DB_PASSWORD=your_db_password
DB_HOST=db
DB_PORT=5433

# ─── Email Settings ───────────────────────────────
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.office365.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=helpdesk@yourdomain.com
EMAIL_HOST_PASSWORD=yourpassword
DEFAULT_FROM_EMAIL=helpdesk@yourdomain.com

# ─── Localization ─────────────────────────────────
TIME_ZONE=America/Toronto
LANGUAGE_CODE=en-ca

# ─── Optional Features ────────────────────────────
ENABLE_JIRA=False
ENABLE_ZENDESK=False
ENABLE_POWER_PLATFORM=False
ENABLE_CELERY=True
ENABLE_CHANGELOG=True

Tip

Never commit your .env file to version control. Store it securely (e.g., Docker Secrets, Vault, or CI/CD secrets).

Secure Documentation Deployment

  • Documentation is built with MkDocs and deployed automatically to your server using GitHub Actions.
  • The docs site (docs.arctyk.dev) is served by NGINX from /srv/arctyk-docs.
  • Deployment uses a dedicated docsdeploy user and SSH key for security.
  • You can make the docs site private using NGINX basic auth or IP whitelisting.

Automated Docs Versioning

  • The docs version is set in mkdocs.yml under extra.version.number.
  • Each deployment automatically updates the Docs Version badge in README.md using the workflow.

Example in mkdocs.yml:

extra:
  version:
    number: v0.3.0-dev.0

Docker Compose Configuration

Your docker-compose.yml defines the Arctyk ITSM runtime stack:

version: "3.9"

services:
  web:
    build: .
    container_name: arctyk_web
    command: >
      sh -c "python manage.py migrate &&
             python manage.py collectstatic --noinput &&
             gunicorn helpdesk.asgi:application -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000"
    volumes:
      - .:/code
      - static_volume:/code/staticfiles
      - media_volume:/code/media
    ports:
      - "8000:8000"
    env_file:
      - .env
    depends_on:
      - db
    restart: unless-stopped

  db:
    image: postgres:17
    container_name: arctyk_db
    environment:
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    ports:
      - "5433:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

volumes:
  postgres_data:
  static_volume:
  media_volume:

This configuration ensures:

  • The web service builds your Django app and runs via Gunicorn + UvicornWorker.
  • The db service runs PostgreSQL 17 on port 5433.
  • Static and media files persist via Docker volumes.

Django Settings Overview

Arctyk ITSM’s helpdesk/settings.py automatically loads configuration from your .env. You rarely need to modify this file directly — just adjust the environment values.

Key settings linked to your .env:

Setting Description Example
DEBUG Enables or disables debug mode False
SECRET_KEY Unique Django secret key your-strong-secret-key
ALLOWED_HOSTS Allowed domains localhost, arctyk.local
DATABASES Database connection details Loaded from .env
EMAIL_* SMTP configuration Loaded from .env
TIME_ZONE Django timezone America/Toronto

Database Configuration

Arctyk ITSM uses PostgreSQL as its default database. Your connection is fully defined in .env, and mapped in docker-compose.yml under the db service.

If your PostgreSQL server runs externally or on a different port, update:

DB_HOST=your-db-server-host
DB_PORT=5433

To apply changes:

docker compose down
docker compose up -d

You can verify the connection inside the web container:

docker compose exec web python manage.py dbshell

Email Configuration

Email enables features like:

  • Ticket creation/assignment notifications
  • Password reset emails
  • Daily summaries

Use the SMTP backend (recommended for production):

EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.office365.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=helpdesk@yourdomain.com
EMAIL_HOST_PASSWORD=yourpassword
DEFAULT_FROM_EMAIL=helpdesk@yourdomain.com

To test your setup:

docker compose exec web python manage.py sendtestemail helpdesk@yourdomain.com

Optional Features

Arctyk ITSM includes modular integrations you can enable as needed. Set the following in your .env file:

Feature Variable Default Description
Jira Integration ENABLE_JIRA False Connect tickets with Jira issues
Zendesk Bridge ENABLE_ZENDESK False Sync with existing Zendesk data
Power Platform ENABLE_POWER_PLATFORM False Allow Power Automate / Power Apps API access
Scheduled Tasks ENABLE_CELERY True Enable Celery for background jobs
Change Logging ENABLE_CHANGELOG True Track changes to assets and tickets

Security Recommendations

  • Set DEBUG=False
  • Use a long, unique SECRET_KEY
  • Limit ALLOWED_HOSTS to your actual domains
  • Serve over HTTPS behind NGINX
  • Keep .env and database volumes out of version control
  • Use a dedicated deploy user for CI/CD
  • Schedule regular backups for:
  • /var/lib/postgresql/data
  • /code/media
  • .env and config files

Next Steps