Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/damianiglesias/proxmox-casaos-deploy/llms.txt

Use this file to discover all available pages before exploring further.

From the moment it starts, casaosscript.sh captures every line of output — both standard output and standard error — into a persistent log file. This is achieved with the line exec > >(tee -a "$LOG_FILE") 2>&1 near the top of the script, which redirects all subsequent stdout and stderr through tee. The tee command writes each line to /var/log/casaos_deploy.log while simultaneously printing it to your terminal in real time, so you never have to choose between watching progress live and having a record for later review.

Log File Location

All deployment output is appended to:
/var/log/casaos_deploy.log
Tail the log in real time while the script is running (useful in a second SSH session):
tail -f /var/log/casaos_deploy.log
View the last 50 lines after the run completes:
tail -n 50 /var/log/casaos_deploy.log
The script opens the log file in append mode (tee -a). If you re-run the script — for example after a failed first attempt — new output is appended to the existing log rather than overwriting it. This means the full history of all runs is preserved in a single file. Keep this in mind if you are searching the log for output from the most recent run only.

Final Health Check

After CasaOS is installed and the media directory structure is created, the script performs a four-step health check to confirm that everything started correctly.
sleep 5
if systemctl is-active --quiet casaos; then
    echo "✅ CasaOS Service: RUNNING"
else
    echo "❌ CasaOS Service: FAILED TO START"
fi

IP_ADDR=$(hostname -I | awk '{print $1}')
echo "Access: http://$IP_ADDR"
The four steps in sequence are:
1

Wait for startup

sleep 5 — pauses for 5 seconds to give CasaOS time to fully initialise its systemd service before the check runs.
2

Check service state

systemctl is-active --quiet casaos — queries systemd for the current state of the casaos service. The --quiet flag suppresses any text output from this command; only the exit code is used.
3

Print result

Depending on the exit code from the previous step, the script prints either:
  • ✅ CasaOS Service: RUNNING (green) — the service is active.
  • ❌ CasaOS Service: FAILED TO START (red) — the service did not come up in time.
4

Print access URL

hostname -I | awk '{print $1}' — retrieves the container’s primary LAN IP address and prints the access URL in the format Access: http://<IP>, along with the path to the saved log file.

Interpreting Health Check Output

OutputMeaningNext step
✅ CasaOS Service: RUNNINGInstallation succeeded and the service is active.Open the printed URL in your browser to complete the CasaOS setup wizard.
❌ CasaOS Service: FAILED TO STARTThe service did not become active within 5 seconds.Check the log file and systemd journal for error details (see below).

Checking the Service Manually

If the health check reports a failure, use these commands inside the LXC container to investigate and recover:
systemctl status casaos
systemctl restart casaos
journalctl -u casaos -n 50
journalctl -u casaos -n 50 prints the last 50 lines of the CasaOS service journal, which usually contains the specific error message that prevented startup.
See the Troubleshooting guide for a full list of common failure scenarios — including Docker nesting issues, network problems, and permission errors — along with step-by-step fixes.

Build docs developers (and LLMs) love