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: 3000

Supported runtimes

LanguageExampleAuto-detects from
Node.jsnode:22package.json → engines.node
Pythonpython:3.12.python-version, pyproject.toml
Gogo:1.22go.mod
Rustrust:1.78rust-toolchain.toml
Javajava:21pom.xml, build.gradle
PHPphp:8.3composer.json → require.php
Rubyruby:3.3.ruby-version, Gemfile
.NETdotnet:8*.csproj → TargetFramework

All options

KeyDescriptionExample
runtimeRuntime and version"node:22", "python:3.12"
pre_buildCommands before build- pnpm bundle
buildOverride build commandpnpm run build
startOverride start commandnode dist/index.js
installOverride install commandpnpm install --frozen-lockfile
portOverride exposed port8080

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/aode

WARNING: 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.