Infrastructure Setup Roadmap
A detailed walkthrough for deploying OpenVolMgr manually on Debian/Ubuntu systems.
1
OS & User Environment
Update the system and create a dedicated service user. Do not run the application as root.
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y python3-venv git redis-server libcairo2-dev libmysqlclient-dev
# Setup Dedicated Service User
sudo adduser --system --group openvolmgr
git clone -b Master [YOUR_GIT_REPO_URL] /opt/openvolmgr
sudo mkdir -p /opt/openvolmgr/media/profile_pics /var/log/celery/
sudo chown -R openvolmgr:openvolmgr /opt/openvolmgr /var/log/celery/
sudo apt-get install -y python3-venv git redis-server libcairo2-dev libmysqlclient-dev
# Setup Dedicated Service User
sudo adduser --system --group openvolmgr
git clone -b Master [YOUR_GIT_REPO_URL] /opt/openvolmgr
sudo mkdir -p /opt/openvolmgr/media/profile_pics /var/log/celery/
sudo chown -R openvolmgr:openvolmgr /opt/openvolmgr /var/log/celery/
2
Application & Virtual Env
Clone the repository and install all required Python modules into a virtual environment.
cd /opt/openvolmgr
sudo -u openvolmgr python3 -m venv venv
source venv/bin/activate
# Install all required packages
pip install django-mysql django-celery-beat celery redis mysqlclient django-select2 django-mathfilters chardet beautifulsoup4 lxml openpyxl python-dotenv dj-database-url whitenoise mozilla-django-oidc cryptography django-widget-tweaks pytz xhtml2pdf
sudo -u openvolmgr python3 -m venv venv
source venv/bin/activate
# Install all required packages
pip install django-mysql django-celery-beat celery redis mysqlclient django-select2 django-mathfilters chardet beautifulsoup4 lxml openpyxl python-dotenv dj-database-url whitenoise mozilla-django-oidc cryptography django-widget-tweaks pytz xhtml2pdf
3
Environment Configuration (.env)
Create the configuration file at /opt/openvolmgr/openvolmgr/.env.
The SECRET_KEY and FERNET_KEY must be generated before you start.
Action Required: Generate Security Keys
1. Generate Django SECRET_KEY:
./venv/bin/python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
2. Generate FerNet Key (Required):
./venv/bin/python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
/opt/openvolmgr/openvolmgr/.env
# --- CORE SECURITY ---
SECRET_KEY=[Insert Key 1]
FERNET_KEY=[Insert Key 2]
DATABASE_URL=mysql://db_user:db_pass@localhost:3306/db_name
SITE_URL=https://your-domain.com
DEBUG=False
# --- OPTIONAL SSO (OpenID Connect) ---
# OIDC is fully supported. If not used, leave these blank or commented.
OIDC_RP_CLIENT_ID=...
OIDC_RP_CLIENT_SECRET=...
OIDC_RP_PROVIDER_URL=...
OIDC_RP_SCOPES=openid profile email
LOGIN_REDIRECT_URL=/
OIDC_OP_AUTHORIZATION_ENDPOINT='...'
OIDC_OP_TOKEN_ENDPOINT='...'
OIDC_OP_USER_ENDPOINT='...'
OIDC_OP_JWKS_ENDPOINT='...'
# --- EMAIL SETTINGS ---
EMAIL_HOST='smtp.yourserver.com'
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER='...'
EMAIL_HOST_PASSWORD='...'
DEFAULT_FROM_EMAIL='...'
4
Systemd Service Units
To ensure the application persists after reboots and handles background tasks, create the following files in /etc/systemd/system/.
Replace $USER and $GROUP with openvolmgr.
/etc/systemd/system/openvolmgr.service
WEB SERVER
[Unit]
Description=OpenVolMgr Runserver
After=network.target
[Service]
Type=simple
User=openvolmgr
Group=openvolmgr
WorkingDirectory=/opt/openvolmgr
ExecStart=/opt/openvolmgr/venv/bin/python manage.py runserver 0.0.0.0:8000
Restart=on-failure
[Install]
WantedBy=multi-user.target
/etc/systemd/system/celery-worker.service
TASK WORKER
[Unit]
Description=Celery Worker
After=network.target redis.service
[Service]
Type=simple
User=openvolmgr
Group=openvolmgr
WorkingDirectory=/opt/openvolmgr
ExecStart=/opt/openvolmgr/venv/bin/celery -A openvolmgr worker -l info
Restart=on-failure
StandardOutput=append:/var/log/celery/openvolmgr-celery-worker.log
StandardError=append:/var/log/celery/openvolmgr-celery-worker_error.log
[Install]
WantedBy=multi-user.target
/etc/systemd/system/celery-beat.service
SCHEDULER
[Unit]
Description=Celery Beat
After=network.target redis.service
[Service]
Type=simple
User=openvolmgr
Group=openvolmgr
WorkingDirectory=/opt/openvolmgr
ExecStart=/opt/openvolmgr/venv/bin/celery -A openvolmgr beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
Restart=on-failure
StandardOutput=append:/var/log/celery/openvolmgr-celery-beat.log
StandardError=append:/var/log/celery/openvolmgr-celery-beat_error.log
[Install]
WantedBy=multi-user.target
5
Migrations & Startup
# Database Initialization
./venv/bin/python manage.py makemigrations
./venv/bin/python manage.py migrate
./venv/bin/python manage.py collectstatic --no-input
# Style Consistency Fix
cp -r /opt/openvolmgr/staticfiles/admin/ /opt/openvolmgr/core/static
# Enable and Start Everything
sudo systemctl daemon-reload
sudo systemctl enable --now openvolmgr celery-worker celery-beat redis-server
./venv/bin/python manage.py makemigrations
./venv/bin/python manage.py migrate
./venv/bin/python manage.py collectstatic --no-input
# Style Consistency Fix
cp -r /opt/openvolmgr/staticfiles/admin/ /opt/openvolmgr/core/static
# Enable and Start Everything
sudo systemctl daemon-reload
sudo systemctl enable --now openvolmgr celery-worker celery-beat redis-server