Acelle / Coolify Session Handoff
Date: 2026-05-13
This file preserves the key context from the deployment/debugging session so a new Codex session can continue without guessing.
Remote Server
- Server:
159.223.130.156 - SSH user:
root - SSH key used by Codex in this session:
/private/tmp/codex_coolify_opencode_ed25519 - Main app path on server:
/opt/acellemail - Local deployment overlay path in this workspace:
acelle-deploy/
Useful SSH command:
ssh -i /private/tmp/codex_coolify_opencode_ed25519 root@159.223.130.156
AcelleMail Status
User uploaded Acelle source from:
/Users/sergey/Downloads/acellemail
to:
/opt/acellemail
using:
rsync -av --progress /Users/sergey/Downloads/acellemail/ root@159.223.130.156:/opt/acellemail/
Codex then added a Docker deployment overlay:
acelle-deploy/Dockerfileacelle-deploy/docker-compose.ymlacelle-deploy/docker/nginx.confacelle-deploy/docker/supervisord.confacelle-deploy/docker/entrypoint.sh.dockerignore
The overlay was synced to the server:
rsync -av -e 'ssh -i /private/tmp/codex_coolify_opencode_ed25519' acelle-deploy/ root@159.223.130.156:/opt/acellemail/
Current Acelle URL:
http://159.223.130.156:8088/install
Expected redirect:
/install/system-compatibility
Docker Compose State
On the server:
cd /opt/acellemail
docker compose ps
Expected services:
acellemail-acelle-1acellemail-mysql-1acellemail-redis-1
Compose uses:
acelle: custom image from/opt/acellemail/Dockerfilemysql:8.4redis:7-alpine- external host port:
8088:80
Database/env values are in:
/opt/acellemail/.env
Do not duplicate secrets into chat unless necessary. Read them from .env on the server.
Important Fix Already Applied
The Acelle installer showed:
MySQLi extension is required
IMAP extension is required
Fix applied in acelle-deploy/Dockerfile:
- added apt packages:
libc-client-devlibkrb5-dev
- configured IMAP:
docker-php-ext-configure imap --with-kerberos --with-imap-ssl
- installed PHP extensions:
imapmysqli
Rebuild command used:
ssh -i /private/tmp/codex_coolify_opencode_ed25519 root@159.223.130.156 'cd /opt/acellemail && docker compose up -d --build acelle'
Verification succeeded:
ssh -i /private/tmp/codex_coolify_opencode_ed25519 root@159.223.130.156 'cd /opt/acellemail && docker compose ps && docker compose exec -T acelle php -m | grep -Ei "mysqli|imap" && curl -I --max-time 10 http://127.0.0.1:8088/install'
Observed result:
php -mshowed:imapmysqli
curl -I http://159.223.130.156:8088/installreturnedHTTP/1.1 302 FoundLocationwashttp://159.223.130.156:8088/install/system-compatibility
Do Not Accidentally Delete
Do not run this unless explicitly intended and confirmed:
docker compose down -v
It removes Docker volumes, including MySQL data.
One docker compose down -v was run earlier only before Acelle installation, while the database was still disposable, to recover from a MySQL 8.4 startup option issue. After the Acelle installer work began, volumes were not removed.
MySQL 8.4 Note
MySQL 8.4 rejected:
--default-authentication-plugin=mysql_native_password
That option was removed from compose. The database was recreated once before installation progress existed.
Queue / Scheduler Note
Before Acelle installation, queue and scheduler workers were disabled in supervisor because database tables such as jobs, sessions, and settings did not exist yet.
Temporary pre-install settings:
QUEUE_CONNECTION=syncSESSION_DRIVER=file- queue worker
autostart=false - scheduler
autostart=false
After the user completes the Acelle installer, likely next step:
- Confirm installer completed.
- Re-enable Acelle worker/scheduler in
docker/supervisord.conf. - Consider switching to database-backed queue/session if Acelle expects it after migrations:
QUEUE_CONNECTION=databaseSESSION_DRIVER=database
- Sync overlay and restart:
rsync -av -e 'ssh -i /private/tmp/codex_coolify_opencode_ed25519' acelle-deploy/ root@159.223.130.156:/opt/acellemail/
ssh -i /private/tmp/codex_coolify_opencode_ed25519 root@159.223.130.156 'cd /opt/acellemail && docker compose up -d --build acelle'
Listmonk Context
User also had a Listmonk instance in Coolify.
The page opened:
http://listmonk-vaoffl6dwzxt9yytajmyi4zk.159.223.130.156.sslip.io:9000
User said login/page worked and planned to configure it manually.
No further Listmonk changes are captured in this handoff.
LibreChat / OpenCode Context
Earlier in the session, user configured LibreChat in Coolify to use OpenCode as a custom endpoint.
LibreChat config inserted into the small Editor content textarea:
version: 1.2.1
cache: true
endpoints:
custom:
- name: "OpenCode"
apiKey: "${OPENCODE_API_KEY}"
baseURL: "https://opencode.ai/zen/go/v1"
models:
default:
- "kimi-k2.6"
- "glm-5.1"
- "deepseek-v4-pro"
- "deepseek-v4-flash"
titleConvo: true
titleModel: "kimi-k2.6"
Environment variable needed in Coolify:
OPENCODE_API_KEY
Notes:
- remove/clear
SERVICE_OPENAI_API_KEY - do not use
OPENAI_REVERSE_PROXY - after restart, LibreChat should show provider
OpenCode
Current Best Next Step
If continuing Acelle:
- Open:
http://159.223.130.156:8088/install
- Continue the installer.
- If another compatibility error appears, check modules:
ssh -i /private/tmp/codex_coolify_opencode_ed25519 root@159.223.130.156 'cd /opt/acellemail && docker compose exec -T acelle php -m'
- If install finishes, re-enable queue/scheduler as described above.