Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
7d50c73
Bump to ubuntu:mantic-20231128
Jan 18, 2024
53df3f1
For WILDCARD DNS update create-zone with INGRESS_IP
Jan 19, 2024
5c70f4a
Bump UID back to 1001
Jan 19, 2024
009fefc
Update deployment, domain, namespace - minor refactor
Jan 23, 2024
946a449
Syncing current iiPod with ii/iipod
Jan 30, 2024
5357b48
Update deployment metadata to be markdown links
Jan 31, 2024
e9210ac
Open in new window by default
Jan 31, 2024
e8c041a
Fix quotes
Jan 31, 2024
c6bbbd8
Would prefer ability to open in new window/tab by default
Jan 31, 2024
ab80479
autoconnect and resize=remote for vnc deployment
Jan 31, 2024
dd39a5c
Appending (:target=_blank) to open in new window
Jan 31, 2024
59e067d
(:target=blank) doesn't work
Jan 31, 2024
3e808f0
chore: minor updates
Oct 3, 2024
c9715c7
feat: add github actions workflow for build
BobyMCbobs Oct 3, 2024
1701332
chore: update iipod build workflows
BobyMCbobs Oct 7, 2024
c9ad262
chore: remove github token from agent
BobyMCbobs Oct 8, 2024
a139216
chore: update params and defaults
BobyMCbobs Oct 8, 2024
1b933d8
chore: left/right eye
hh Oct 8, 2024
d40420c
use single per subsriber
hh Oct 8, 2024
2d8678f
left- right-
Oct 15, 2024
2289a1a
chore: quality of life update
BobyMCbobs Oct 17, 2024
f2470d8
chore: make iipod run as privileged
BobyMCbobs Oct 17, 2024
a3115bd
chore: add mounts for docker
BobyMCbobs Oct 17, 2024
a59dea7
chore: enable docker service on startup
BobyMCbobs Oct 17, 2024
2b753fe
chore: use env bash for startup.sh
BobyMCbobs Oct 17, 2024
55d9163
chore: ignore unused variable dns_update_account
BobyMCbobs Oct 17, 2024
5d9e226
chore: remove conflict diff for ing-right
BobyMCbobs Oct 17, 2024
1b746a5
feat: add kata with dind
Oct 21, 2024
845589c
feat: add conditional template privileged mode
Oct 24, 2024
76dc17b
chore: update readme for privileged
Oct 24, 2024
ae4f0a8
chore: add bridged network annotation
Oct 30, 2024
9a9d2b2
chore: add cluster networking to iipod
Oct 30, 2024
26d5285
chore: update pod dns
Nov 3, 2024
70df366
chore: use Cilium route for Docker
Nov 3, 2024
8774283
Merge pull request #24 from ii/qol-update-202410181012
BobyMCbobs Nov 3, 2024
8d42151
chore: remove sbom step in build
Nov 4, 2024
c40b565
chore: update .terraform.lock.hcl
Nov 4, 2024
f7fc5fa
chore: add xclip
heyste Nov 4, 2024
fcbd529
Merge pull request #26 from ii/add-xclip
heyste Nov 4, 2024
6394179
Add Claude Code module and fix Doom Emacs build
Jan 18, 2026
4edad60
Migrate to coder provider v2.0 API
Jan 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .coderignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
build
.terraform
85 changes: 85 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: build
on:
push: {}
release:
types: [published]
workflow_dispatch: {}
permissions:
contents: read
packages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
- name: Maximize build space
uses: ublue-os/remove-unwanted-software@517622d6452028f266b7ba4cc9a123b5f58a6b53 # v7
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # v3.6.0
- uses: imjasonh/setup-crane@31b88efe9de28ae0ffa220711af4b60be9435f6e # v0.4
- name: Set up QEMU
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8026d2bc3645ea78b0d2544766a1225eb5691f89 # v3.7.0
- name: Login to ghcr.io
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- id: run-info
name: collect job run info
env:
GHCR_DOCKER_REPO: ghcr.io/${{ github.repository }}
run: |
TAGS="latest,$(git show -s --format=%cd --date=format:'%Y.%m.%d.%H%M')"
REGISTRY="${GHCR_DOCKER_REPO,,}"
[ -z "$REGISTRY_OVERRIDE" ] || REGISTRY="$REGISTRY_OVERRIDE"
IMAGES_WITH_TAGS=""
for TAG in $(echo $TAGS | tr ',' ' '); do
NEW_TAG="$REGISTRY:$TAG"
if [ -n "$IMAGES_WITH_TAGS" ]; then
IMAGES_WITH_TAGS="$NEW_TAG,$IMAGES_WITH_TAGS"
else
IMAGES_WITH_TAGS="$NEW_TAG"
fi
done
echo "image=$REGISTRY" >> $GITHUB_OUTPUT
echo "images-with-tags=$IMAGES_WITH_TAGS" >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0
id: build
with:
push: true
tags: ${{ steps.run-info.outputs.images-with-tags }}
context: build
platforms: linux/amd64
file: build/Dockerfile
labels: |
org.opencontainers.image.name=${{ steps.run-info.outputs.image }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.source=${{ github.repositoryUrl }}
- name: get-digests
id: get-digests
env:
DESTINATION: ${{ steps.run-info.outputs.image }}@${{ steps.build.outputs.digest }}
run: |
DESTINATION_DIGEST="$(crane digest "${DESTINATION}" || true)"
(
echo "DESTINATION_DIGEST"
echo "${DESTINATION_DIGEST}"
) | column -t
echo "destination=${DESTINATION_DIGEST}" >> $GITHUB_OUTPUT
- name: Sign image
env:
COSIGN_YES: "true"
run: |
cosign sign ${{ steps.run-info.outputs.image }}@${{ steps.get-digests.outputs.destination }} -y --recursive
- name: image
id: image
run: |
echo "image=${{ steps.run-info.outputs.image }}@${{ steps.get-digests.outputs.destination }}" >> $GITHUB_OUTPUT
- name: image result
id: result
run: |
echo "Build, pushed and signed: ${{ steps.image.outputs.image }}"
142 changes: 0 additions & 142 deletions .terraform.lock.hcl

This file was deleted.

1 change: 0 additions & 1 deletion README.md

This file was deleted.

90 changes: 90 additions & 0 deletions README.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
* iipod

Setup

#+begin_src bash
terraform init
#+end_src

Create a .envrc

#+begin_src shell
export CODER_URL="https://coder.sharing.io"
export CODER_DOMAIN="coder.sharing.io" #*.DOMAIN for spaces
export LOCAL_IP="" # local to the cluster for ingress
export PUBLIC_IP="" # external DNS / reachable by everyone
# Need to create domains, so need PDNS account
export PDNS_API_KEY="" # Usually pretty short
export PDNS_API_URL="https://pdns.ii.nz" # We may run this per cluster later
export PDNS_API_ACCOUNT="" # Actually the PowerDNS Admin account
# RFC2136 TSIG
export DNS_UPDATE_SERVER="" # DNS Server to connect to
export DNS_UPDATE_KEYNAME="sharing.io." # TSIG Key Name
export DNS_UPDATE_KEYALGORITHM="hmac-sha256" # TSIG Key Algorithm
export DNS_UPDATE_KEYSECRET=""
# The rest of these are for the defaults for the template default vars and workspace rich-params
export DEFAULT_GIT_URL="https://github.com/ii/iipod/"
export DEFAULT_ORG_URL=""
export DEFAULT_CONTAINER_IMAGE="ghcr.io/ii/iipod:2024.10.17.2139"

# For when we create/push a template, to push a .terraform.lock
export TF_VERSION="1.9.7"
# For when we instanciate a template, the name and how long to keep it up
export CODER_TEMPLATE_NAME="iipod"
# export CODER_WORKSPACE_STOP_AFTER="7d"
export OPENAI_API_TOKEN=""
#+end_src

Push the standard template

#+begin_src shell
coder template push \
--yes \
--directory . \
--variable coder_url=$CODER_URL \
--variable ingress_ip=$INGRESS_IP \
--variable coder_domain=$CODER_DOMAIN \
--variable openai_api_token=$OPENAI_API_TOKEN \
--variable pdns_api_url=$PDNS_API_URL \
--variable pdns_api_key=$PDNS_API_KEY \
--variable pdns_api_account=$PDNS_API_ACCOUNT \
--variable dns_update_server=$DNS_UPDATE_SERVER \
--variable dns_update_keyname=$DNS_UPDATE_KEYNAME \
--variable dns_update_keyalgorithm=$DNS_UPDATE_KEYALGORITHM \
--variable dns_update_keysecret=$DNS_UPDATE_KEYSECRET \
--variable default_git_url=$DEFAULT_GIT_URL \
--variable default_org_url=$DEFAULT_ORG_URL \
--variable default_container_image=$DEFAULT_CONTAINER_IMAGE \
$CODER_TEMPLATE_NAME \
--message "$USER iipod Template at $(date)" --variable public_ip="$(dig +short A coder.sharing.io)" \
--variable privileged=false
#+end_src

Push the privileged template

#+begin_src shell
coder template push \
--yes \
--directory . \
--variable coder_url=$CODER_URL \
--variable ingress_ip=$INGRESS_IP \
--variable coder_domain=$CODER_DOMAIN \
--variable openai_api_token=$OPENAI_API_TOKEN \
--variable pdns_api_url=$PDNS_API_URL \
--variable pdns_api_key=$PDNS_API_KEY \
--variable pdns_api_account=$PDNS_API_ACCOUNT \
--variable dns_update_server=$DNS_UPDATE_SERVER \
--variable dns_update_keyname=$DNS_UPDATE_KEYNAME \
--variable dns_update_keyalgorithm=$DNS_UPDATE_KEYALGORITHM \
--variable dns_update_keysecret=$DNS_UPDATE_KEYSECRET \
--variable default_git_url=$DEFAULT_GIT_URL \
--variable default_org_url=$DEFAULT_ORG_URL \
--variable default_container_image=$DEFAULT_CONTAINER_IMAGE \
$CODER_TEMPLATE_NAME-privileged \
--message "$USER iipod Template at $(date)" --variable public_ip="$(dig +short A coder.sharing.io)" \
--variable privileged=true
#+end_src

* Note

Privileged requires the namespace label ~pod-security.kubernetes.io/enforce: privileged~.
Loading