This commit is contained in:
lx
2026-08-16 15:08:52 -04:00
commit fa294ed899
442 changed files with 94718 additions and 0 deletions
+114
View File
@@ -0,0 +1,114 @@
# Vortexi OSS
An open-source revival based off of the Syntax[.]eco source code.
---
## Quick Start (Docker)
### 1. Run Setup
```bash
./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
```bash
./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:///.env) file (copied from [`.env.example`](file:///.env.example)).
Key settings:
- `BASE_DOMAIN` - Your main domain (e.g. `yourdomain.com` or `localhost`).
- `BASE_URL` - Full base URL (e.g. `https://www.yourdomain.com` or `http://localhost:3003`).
- `RCC_ACCESS_KEY` - The access key used for RCCService and FFlags settings.
- `USE_LOCAL_STORAGE` - Set to `True` to store and serve assets locally in `./download_cache` without 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
```caddy
yourdomain.com, *.yourdomain.com {
reverse_proxy localhost:3003
}
```
### Nginx
```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
```apache
<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:**
```bash
docker compose down
```
- **View live logs:**
```bash
docker compose logs -f web
```
- **Access Flask shell inside container:**
```bash
docker compose exec web flask shell
```
- **Run in local debug mode (without Docker):**
```bash
./debug.sh
```