Installing skyportd
Install the Skyport daemon on a node and enroll it with the panel.
Prerequisites
Section titled “Prerequisites”Before installing skyportd:
- The panel must be online
- You have created a location and node in the admin panel
- You have generated a configuration token for that node
- Docker is installed on the node machine
Supported architectures
Section titled “Supported architectures”| Architecture | Binary |
|---|---|
| x86_64 | skyportd-linux-x86_64 |
| aarch64 (ARM64) | skyportd-linux-aarch64 |
| riscv64 | skyportd-linux-riscv64 |
Automatic installation (recommended)
Section titled “Automatic installation (recommended)”The official installer handles everything — downloading the binary, setting up Docker, creating the systemd service, and optionally configuring the daemon:
bash <(curl -fsSL https://raw.githubusercontent.com/skyportsh/installer/main/install-daemon.sh)The installer will ask you to choose:
- Release channel — stable (downloads a pre-built binary) or bleeding edge (compiles from source)
- Docker — installs Docker if not already present
- Panel URL and configuration token — for immediate enrollment
After the installer finishes, skyportd is enrolled and running as a systemd service.
Manual installation
Section titled “Manual installation”1. Install Docker
Section titled “1. Install Docker”curl -fsSL https://get.docker.com | sh2. Download the daemon binary
Section titled “2. Download the daemon binary”sudo mkdir -p /etc/skyportd/config /etc/skyportd/volumes
# For x86_64:sudo curl -fsSL https://github.com/skyportsh/skyportd/releases/latest/download/skyportd-linux-x86_64 \ -o /etc/skyportd/skyportdsudo chmod +x /etc/skyportd/skyportdFor other architectures, replace the binary name accordingly.
If no stable release exists yet, clone and build from source:
sudo apt install -y build-essential pkg-configcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -ysource ~/.cargo/envgit clone --depth 1 https://github.com/skyportsh/skyportd.git /tmp/skyportd-buildcd /tmp/skyportd-buildcargo build --releasesudo cp target/release/skyportd /etc/skyportd/skyportdsudo chmod +x /etc/skyportd/skyportd3. Create the default config
Section titled “3. Create the default config”Create /etc/skyportd/config/default.toml:
[daemon]name = "skyportd"uuid = "00000000-0000-0000-0000-000000000000"tick_interval = "5s"shutdown_timeout = "30s"
[panel]url = "http://127.0.0.1:8000"configuration_token = ""
[logging]level = "info"format = "pretty"
[runtime]worker_threads = 04. Create a systemd service
Section titled “4. Create a systemd service”Create /etc/systemd/system/skyportd.service:
[Unit]Description=skyportd — Skyport DaemonAfter=docker.service network.targetWants=docker.service
[Service]User=rootWorkingDirectory=/etc/skyportdExecStart=/etc/skyportd/skyportdRestart=alwaysRestartSec=5StandardOutput=journalStandardError=journal
[Install]WantedBy=multi-user.targetsudo systemctl daemon-reloadsudo systemctl enable skyportd5. Configure and enroll
Section titled “5. Configure and enroll”You can configure the daemon in two ways:
Option A: Interactive prompt
cd /etc/skyportdsudo ./skyportdThe daemon will prompt for the panel URL and configuration token on first run.
Option B: Pre-configure
Create /etc/skyportd/config/local.toml:
[panel]url = "https://panel.example.com"configuration_token = "your-one-time-token"Then start the service:
sudo systemctl start skyportd6. Verify enrollment
Section titled “6. Verify enrollment”journalctl -u skyportd -fYou should see a successful enrollment message. The node will show as online in the panel.
Reconfiguring
Section titled “Reconfiguring”If you need to re-enroll the daemon (e.g., after moving to a new panel), use the --configure flag:
cd /etc/skyportdsudo systemctl stop skyportdsudo ./skyportd --configureThis clears the existing enrollment and restarts the interactive setup.