Advanced Configuration
Customizing the Portal
Most branding (portal name, description, logo, theme colors) is configured visually in Settings → General. For low-level changes, edit the portal's .env file in the install directory, then apply them by restarting from the install directory: cd /opt/aode && docker compose restart.
Security Hardening
Enable UFW firewall, configure Fail2Ban for SSH protection, harden SSL/TLS settings in Traefik configuration, and set up regular updates with automated backup scripts.
Custom Deployment Configuration (.aode.yml)
Some projects require a specific runtime version, pre-build steps, or custom commands that the platform cannot detect automatically — for example, an AI agent needing Node.js 22 with a bundling step, or a Python service requiring 3.12. Without this configuration the deployment may fail with errors like "unsupported engine" or version mismatches.
How it works
Place a .aode.yml file in the root of your repository. The platform reads it automatically.
Full example
# .aode.yml
runtime: "node:22"
pre_build:
- pnpm canvas:a2ui:bundle
build: pnpm build
start: pnpm start
port: 3000Supported runtimes
| Language | Example | Auto-detects from |
|---|---|---|
Node.js | node:22 | package.json → engines.node |
Python | python:3.12 | .python-version, pyproject.toml |
Go | go:1.22 | go.mod |
Rust | rust:1.78 | rust-toolchain.toml |
Java | java:21 | pom.xml, build.gradle |
PHP | php:8.3 | composer.json → require.php |
Ruby | ruby:3.3 | .ruby-version, Gemfile |
.NET | dotnet:8 | *.csproj → TargetFramework |
All options
| Key | Description | Example |
|---|---|---|
runtime | Runtime and version | "node:22", "python:3.12" |
pre_build | Commands before build | - pnpm bundle |
build | Override build command | pnpm run build |
start | Override start command | node dist/index.js |
install | Override install command | pnpm install --frozen-lockfile |
port | Override exposed port | 8080 |
All fields are optional.
Auto-detection (no .aode.yml needed)
If the project files already declare the version, the platform picks it up automatically — no config file required. For example, package.json with "engines": { "node": ">=22" } will automatically use Node 22.
Troubleshooting
Installation Issues
Error: "curl: command not found" - Install curl with sudo apt install curl -y.
Error: "Docker installation failed" - Install Docker manually with curl -fsSL https://get.docker.com | sudo bash.
Error: "Permission denied" - Make sure you pipe to sudo bash: curl -fsSL https://install.aode.tech/install-secure.sh | sudo bash -s YOUR-LICENSE-KEY.
SSL Certificate Issues
If SSL certificate fails: Check DNS with dig yourdomain.com, check firewall with sudo ufw status, ensure ports 80 and 443 are open, and wait if Let's Encrypt rate limit is reached.
Project Deployment Fails
View build logs in the project's "Logs" section. Common issues: Missing dependencies (add to package.json), wrong build command (specify in project settings), out of memory (increase container memory limit), GitHub auth failed (add GitHub token in Settings).
Getting Help
Support: Email info@theaode.com.
Uninstallation
Complete Removal
To completely remove AODE from your server:
cd /opt/aode
docker compose down -v
docker rm -f $(docker ps -aq --filter "name=aode")
docker rmi $(docker images --filter "reference=aode*" -q)
sudo rm -rf /opt/aodeWARNING: The -v flag deletes all data volumes (database, certificates, uploads). Create a backup first from Settings → Backup in the portal and download it before running this.
Backup Before Uninstall
Save important data: Backup database, download backup files, backup environment config, and backup Traefik certificates.