Coder sysext
This sysext ships Coder, an open-source platform for self-hosted developer workspaces.
The sysext installs:
coderGo binary at/usr/bin/codercoder.serviceandcoder-workspace-proxy.serviceunits, taken unmodified from the upstream Coder Debian packagesysusers.dentry to create thecodersystem user the units run astmpfiles.dentry that creates empty0600 root:rootenv files at/etc/coder.d/coder.envand/etc/coder.d/coder-workspace-proxy.envon first boot
The units carry ConditionFileNotEmpty on their env files, so coder.service only starts once /etc/coder.d/coder.env has been populated with at least CODER_ACCESS_URL and CODER_PG_CONNECTION_URL (same for the workspace-proxy unit).
Usage
Download and merge the sysext at provisioning time using the below butane snippet.
The snippet includes automated updates via systemd-sysupdate. Sysupdate will stage updates and request a reboot by creating a flag file at /run/reboot-required. You can deactivate updates by changing enabled: true to enabled: false in systemd-sysupdate.timer.
Note that the snippet is for the x86-64 version of Coder v2.34.4.
Check out the metadata release at https://github.com/flatcar/sysext-bakery/releases/tag/coder for a list of all versions available in the bakery.
variant: flatcar
version: 1.0.0
storage:
files:
- path: /opt/extensions/coder/coder-v2.34.4-x86-64.raw
mode: 0644
contents:
source: https://extensions.flatcar.org/extensions/coder-v2.34.4-x86-64.raw
- path: /etc/sysupdate.coder.d/coder.conf
contents:
source: https://extensions.flatcar.org/extensions/coder.conf
- path: /etc/sysupdate.d/noop.conf
contents:
source: https://extensions.flatcar.org/extensions/noop.conf
- path: /etc/coder.d/coder.env
mode: 0600
contents:
inline: |
CODER_ACCESS_URL=https://coder.example.com
CODER_HTTP_ADDRESS=0.0.0.0:3000
CODER_PG_CONNECTION_URL=postgres://coder:coder@db.example.com/coder?sslmode=disable
links:
- target: /opt/extensions/coder/coder-v2.34.4-x86-64.raw
path: /etc/extensions/coder.raw
hard: false
systemd:
units:
- name: coder.service
enabled: true
- name: systemd-sysupdate.timer
enabled: true
- name: systemd-sysupdate.service
dropins:
- name: coder.conf
contents: |
[Service]
ExecStartPre=/usr/bin/sh -c "readlink --canonicalize /etc/extensions/coder.raw > /run/coder"
ExecStartPre=/usr/lib/systemd/systemd-sysupdate -C coder update
ExecStartPost=/usr/bin/sh -c "readlink --canonicalize /etc/extensions/coder.raw > /run/coder-new"
ExecStartPost=/usr/bin/sh -c "if ! cmp --silent /run/coder /run/coder-new; then touch /run/reboot-required; fi"