Skip to content

Instantly share code, notes, and snippets.

@Harry-Chen
Last active March 28, 2024 07:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Harry-Chen/6b970604016416e8be7a4c5cef41d46c to your computer and use it in GitHub Desktop.
Save Harry-Chen/6b970604016416e8be7a4c5cef41d46c to your computer and use it in GitHub Desktop.
TrueNAS customization after upgrade

Recover apt

#!/bin/bash

mount -o remount,rw /usr

cd /usr/local/bin
mkdir evil_apt
mv apt* dpkg evil_apt/

cd /usr/bin
chmod +x apt* dpkg

mount -o remount,ro /usr

Install Docker

Write to /etc/docker/daemon.json:

{
  "data-root": "/mnt/data/srv/docker",
  "storage-driver": "zfs",
  "ipv6": true,
  "fixed-cidr-v6": "fd00:beef:8500::/48"
}

Run:

zfs create -r data/srv/docker
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null
apt install docker-ce

Configure IPv6

apt install dhcpcd
systemctl enable dhcpcd

docker pull robbertkl/ipv6nat
docker run -d --name ipv6nat --cap-drop ALL --cap-add NET_ADMIN --cap-add NET_RAW --cap-add SYS_MODULE --network host --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock:ro -v /lib/modules:/lib/modules:ro robbertkl/ipv6nat

Setup portainer

docker run -d -p 127.0.0.1:9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /mnt/data/srv/portainer:/data --network=services --hostname=portainer --domainname=nas.cslab.moe  portainer/portainer-ce:latest

Profit!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment