fa294ed899e3c4a4c9844f52f27ae0cbc95513d8
Vortexi OSS
An open-source revival based off of the Syntax[.]eco source code.
Quick Start (Docker)
1. Run Setup
./setup.sh
This wizard will:
- Ask for your domain name (or default to
localhost) and replace any old domains throughout the project. - Generate a new RCC access key and copy over the settings JSON.
2. Start the Stack
./start.sh
./start.sh runs docker compose up --build.
On first startup, the container automatically:
- Generates all missing RSA 1024-bit, 2048-bit, and gameserver signing keys into
app/files/ - Waits for PostgreSQL and Redis to be ready
- Runs
db.create_all()to build all database tables - Creates an Admin user with full permissions and prints the username and generated password right in the console output
Once started, the site will be accessible on port 3003 (e.g. http://localhost:3003).
Configuration & Environment Variables
All settings are configured inside the .env file (copied from .env.example).
Key settings:
BASE_DOMAIN- Your main domain (e.g.yourdomain.comorlocalhost).BASE_URL- Full base URL (e.g.https://www.yourdomain.comorhttp://localhost:3003).RCC_ACCESS_KEY- The access key used for RCCService and FFlags settings.USE_LOCAL_STORAGE- Set toTrueto store and serve assets locally in./download_cachewithout needing an AWS S3 bucket.POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB- Database credentials.FLASK_SESSION_KEY- Session secret (auto-generated if left blank).CLOUDFLARE_TURNSTILE_SITE_KEY/CLOUDFLARE_TURNSTILE_SECRET_KEY- For captcha verification on signup/login.DISCORD_BOT_TOKEN/DISCORD_CLIENT_ID/DISCORD_CLIENT_SECRET- For Discord linking and bot functionality.MAILJET_APIKEY/MAILJET_SECRETKEY- For email verification and password resets.
Reverse Proxy Examples
You should run a reverse proxy in front of port 3003 for SSL and subdomains.
Caddy
yourdomain.com, *.yourdomain.com {
reverse_proxy localhost:3003
}
Nginx
server {
listen 80;
server_name yourdomain.com *.yourdomain.com;
client_max_body_size 50M;
location / {
proxy_pass http://127.0.0.1:3003;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Apache2
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias *.yourdomain.com
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:3003/
ProxyPassReverse / http://127.0.0.1:3003/
LimitRequestBody 209715200
</VirtualHost>
Helpful Commands
- Stop containers:
docker compose down - View live logs:
docker compose logs -f web - Access Flask shell inside container:
docker compose exec web flask shell - Run in local debug mode (without Docker):
./debug.sh
Languages
JavaScript
58.6%
Python
28.2%
HTML
10.6%
Lua
1.2%
CSS
1.1%
Other
0.3%