Skip to content

rConfig V8 Core Docker Deployment

rConfig V8 Core is the open-source edition of rConfig’s Network Configuration Management platform. This guide provides complete Docker deployment procedures for rapid, consistent installations.

  • Docker Engine 20.10+
  • Docker Compose 2.0+
  • Git
  • Minimum 2GB RAM
  • Port 8080 available (or configure alternative)
Terminal window
git clone https://github.com/rconfig/rconfig8coredocker.git
cd rconfig8coredocker

Default configuration works for most cases. To customize:

Terminal window
# Create/edit .env file
cat > .env << EOF
APP_URL=http://localhost:8080
DB_DATABASE=rconfig
DB_USERNAME=rconfig_user
DB_PASSWORD=rconfig_pass
MYSQL_ROOT_PASSWORD=root_password
EOF
Terminal window
# Build containers (first time: 5-10 minutes)
docker compose build
# Start all services
docker compose up -d
# Verify status
docker compose ps
Terminal window
# Execute installation wizard
docker compose exec app php artisan v8core:install
# When prompted:
# - "Add a cron entry for task scheduling?" → yes

Navigate to: http://localhost:8080

Default credentials:

  • Username: admin@domain.com
  • Password: admin
Terminal window
# Check all services running
docker compose exec app supervisorctl status
# Expected output:
# apache2 RUNNING
# horizon RUNNING
# redis-server RUNNING
# schedule-run_00 RUNNING

Monitor queues at: http://localhost:8080/horizon

Terminal window
# For testing/development environments
docker compose exec app bash -c "cat >> /var/www/html/rconfig/.env << 'EOF'
MAIL_MAILER=log
MAIL_FROM_ADDRESS=noreply@rconfig.local
MAIL_FROM_NAME=rConfig
EOF"
docker compose exec app php artisan config:clear
docker compose restart app
Terminal window
# Application logs
docker compose logs -f app
# Laravel logs
docker compose exec app tail -f /var/www/html/rconfig/storage/logs/laravel.log
Terminal window
docker compose exec app php artisan [command]
# Examples:
docker compose exec app php artisan config:clear
docker compose exec app php artisan cache:clear
docker compose exec app php artisan horizon:status
Terminal window
# Restart all containers
docker compose restart
# Restart specific service
docker compose exec app supervisorctl restart horizon
Terminal window
# Create backup with timestamp
docker compose exec -T db mysqldump -u root -proot_password rconfig > rconfig-backup-$(date +%Y%m%d-%H%M%S).sql
Terminal window
docker compose stop app
docker compose exec -T db mysql -u root -proot_password rconfig < rconfig-backup-20251222.sql
docker compose start app
docker compose exec app php artisan config:clear
Terminal window
docker compose exec db mysql -u root -proot_password rconfig
Terminal window
chmod +x update.sh
./update.sh

The script handles: backup → rebuild → migrate → cache clear

Terminal window
# Backup
docker compose exec -T db mysqldump -u root -proot_password rconfig > backup.sql
# Rebuild with latest code
docker compose down
docker compose build --no-cache
docker compose up -d
# Migrate and clear caches
docker compose exec app php artisan migrate --force
docker compose exec app php artisan cache:clear
docker compose exec app php artisan config:clear
docker compose exec app php artisan horizon:terminate
Terminal window
# Edit Dockerfile, change: ARG RCONFIG_VERSION=main
# To: ARG RCONFIG_VERSION=v8.1.0
docker compose build --no-cache --build-arg RCONFIG_VERSION=v8.1.0
docker compose up -d
Terminal window
# Check logs
docker compose logs app
# Check port conflicts
netstat -tulpn | grep 8080
# Fix permissions
docker compose exec app chown -R www-data:www-data /var/www/html/rconfig/storage
docker compose exec app chmod -R 775 /var/www/html/rconfig/storage
Terminal window
# Check database health
docker compose ps db
# Wait for initialization (first startup)
sleep 30 && docker compose restart app
# Recreate database
docker compose down
docker compose up -d db
sleep 30
docker compose up -d app
Terminal window
docker compose exec app chown -R www-data:www-data /var/www/html/rconfig/storage /var/www/html/rconfig/bootstrap/cache
docker compose exec app chmod -R 775 /var/www/html/rconfig/storage /var/www/html/rconfig/bootstrap/cache
docker compose exec app php artisan config:clear
docker compose exec app php artisan cache:clear
Terminal window
# Check status
docker compose exec app php artisan horizon:status
# Restart
docker compose exec app supervisorctl restart horizon
# OR
docker compose exec app php artisan horizon:terminate
Terminal window
# Clear caches
docker compose exec app php artisan optimize:clear
# Optimize
docker compose exec app php artisan optimize
# Restart
docker compose restart app

Edit docker-compose.yml:

services:
app:
ports:
- "9443:80" # External port
db:
ports:
- "127.0.0.1:3306:3306" # Localhost only
Terminal window
# Allow specific IPs only
sudo ufw allow from 10.0.0.0/8 to any port 8080
Terminal window
chmod 600 .env
echo ".env" >> .gitignore
Terminal window
# Cache configuration
docker compose exec app php artisan config:cache
docker compose exec app php artisan route:cache
docker compose exec app php artisan view:cache
docker compose exec app composer dump-autoload --optimize
Terminal window
# 1. Backup existing
mysqldump -u root -p rconfig > migration-backup.sql
tar -czf storage-backup.tar.gz /path/to/rconfig/storage
# 2. Deploy Docker (follow installation above)
# 3. Restore database
docker compose exec -T db mysql -u root -proot_password rconfig < migration-backup.sql
# 4. Restore storage
tar -xzf storage-backup.tar.gz
docker cp storage/. rconfig_app:/var/www/html/rconfig/storage/
docker compose exec app chown -R www-data:www-data /var/www/html/rconfig/storage
# 5. Clear caches
docker compose exec app php artisan config:clear
docker compose restart app

Multiple instances on same server? Clone to different directories, change ports in docker-compose.yml.

Change database password after install?

Terminal window
docker compose exec db mysql -u root -proot_password -e "ALTER USER 'rconfig_user'@'%' IDENTIFIED BY 'new_password';"
docker compose exec app sed -i 's/DB_PASSWORD=.*/DB_PASSWORD=new_password/' /var/www/html/rconfig/.env
docker compose exec app php artisan config:clear
docker compose restart app

Use external database? Remove db service from docker-compose.yml, update .env with external credentials.

Enable HTTPS/SSL? See SSL Configuration Documentation.