Skip to content

Manual Stack Deployment

Joshua Zenn edited this page May 28, 2021 · 1 revision

The following instructions will walk you through a full manual deployment. This includes installing Captain from DEB or RPM packages onto manually-provisioned LXC instances in Proxmox. In the future, a bootstrap process will be provided where Captain will be able to install itself into a Proxmox cluster using its own stack and state store.

Prerequisites

A Captain stack requires the following services to be installed on your network, and all of these services must be able to communicate with each other on the same network.

Software

  • Proxmox 5.X or later.
  • Any DHCP server (ISC standalone or integrated on a network device).
  • (Optional) Postgres (any version that is not EOL).

Proxmox Configuration

  • Proxmox must be in "cluster mode", regardless of how many nodes are in use.
  • The SDN beta for Proxmox is recommended if you do not have a physical network that is dedicated for VM/LXC guests.
  • A shared filesystem using NFS, Ceph, or GlusterFS is strongly recommended. Otherwise you need to ensure that the image stores (ISO/LXC templates) are EXACTLY the same on all nodes (e.g. debian-10.0-877889.iso exists on a share named pve-img on all nodes).

Hardware Requirements

Service Dedicated? Host Type CPU RAM Disk
ATC + Builder Yes LXC 2 128-256 MB 4 GB
Postgres (Optional) Yes LXC/VM/Dedicated 1 128-512 MB 12 GB
Radar (Optional) No LXC 1 64-128 MB 4 GB

The Radar component is special in that it can be installed in the same container as ATC/Builder, or it could be on it's own dedicated instance. The only hard requirement for Radar is that it must have network access to ATC in order to connect with the ATC API.

Network Requirements

Ideally, there should be a network configured in Proxmox that is isolated from all other systems on your network. This network will be used for deploying planes. This network should meet the following requirements:

  • DHCP server is set up and listening. DNS integration is also recommended.

OR

  • A block of at least 6 IPv4 addresses are available for the IPAM module to distribute to new planes.
  • If the SDN beta of Proxmox is being used, ensure that all Proxmox nodes enforce the same MTU for the network.

1. Creating Containers

Create an LXC container in Proxmox with at least the values specified in the table above for ATC. If you plan to use the prebuilt packages on GitHub, you must choose Ubuntu or Debian as the OS. If you choose to use DHCP, you MUST have a DNS entry that points to ATC. If you have multiple nodes in your Proxmox cluster, and you have shared storage configured, it would be a good idea to enable HA on the container.

2A. Installing ATC From DEB Package

Once your new container has booted, run the following commands:

apt-get update
apt-get install wget
wget <URL_to_deb_from_github_actions>
apt install ./atc-*.deb

2B. Installing ATC From Source

It is assumed in the following commands that you are using Ubuntu or Debian. If not, you'll need to substitute the name of your package manager appropriately.

apt-get update
apt-get install git golang make sqlite3
git clone https://github.com/ARMmaster17/Captain.git
cd Captain/ATC
make build
make deb
make install

3. Configure ATC

Configure ATC with the command nano /etc/captain/atc/config.yaml. See the relevant wiki page for guidance on what to put here. You will also need to run export CAPTAIN_DB=<filename or postgres://...>

4. Start ATC

Run sudo systemctl start captain to start ATC. You can run sudo systemctl status captain to verify that no errors occurred during startup.

Clone this wiki locally