Changes between Initial Version and Version 1 of System Description


Ignore:
Timestamp:
05/19/25 10:30:42 (5 days ago)
Author:
enno
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • System Description

    v1 v1  
     1= System Configuration Overview =
     2
     3This page documents the system configuration for the Neotek server, maintained using [https://guix.gnu.org Guix System]. The configuration integrates:
     4        •       Trac for project management
     5        •       Gitolite for secure Git access
     6        •       Git HTTP access via nginx + fcgiwrap
     7        •       Certbot-managed TLS
     8        •       WireGuard VPN access
     9        •       Minimal desktop environment
     10        •       Declarative and snapshot-friendly Btrfs subvolume layout
     11
     12== Modules and Packages ==
     13
     14The system imports essential Guix modules for services, users, packages, and expression construction. Additionally, it includes a private channel oai and SRFI-1 helpers.
     15
     16The following packages are installed:
     17        •       Window manager: i3-wm, i3status, dmenu, st
     18        •       Core tools: vim, git, htop, iotop, lsof
     19        •       Server tools: certbot, nginx, trac
     20        •       SSL and Git access: le-certs, fcgiwrap
     21
     22== File System Layout ==
     23
     24A single Btrfs volume (NeotekRoot) is used, subdivided into subvolumes for:
     25        •       / → @
     26        •       /home → @home
     27        •       /gnu → @gnu
     28        •       /var/log → @log
     29
     30All subvolumes are mounted with:
     31
     32{{{
     33compress=zstd,ssd,discard=async
     34}}}
     35
     36This ensures compression, SSD optimization, and trim support.
     37
     38== Users and Permissions ==
     39
     40User accounts are declaratively defined:
     41        •       enno: Admin user, with access to wheel, ssl-cert, tracd, etc.
     42        •       tracd: Trac daemon user (no login shell)
     43        •       nginx: Nginx worker (read access to certs/repos)
     44        •       git: Gitolite access user (home is /home/git)
     45
     46Groups:
     47        •       ssl-cert: Shared access to Let’s Encrypt files
     48        •       git: Gitolite and HTTP Git
     49        •       tracd: Trac service access
     50
     51A custom activation service adjusts permissions for:
     52        •       /etc/letsencrypt/live and /etc/letsencrypt/archive
     53        •       /home/git
     54
     55== Services ==
     56
     57=== Core ===
     58        •       gnome-desktop-service-type: Minimal GUI
     59        •       openssh-service-type: Remote access
     60        •       qemu-guest-agent-service-type: VM support
     61
     62=== Trac ===
     63
     64A custom [wiki:Shepherd shepherd] service starts tracd:
     65        •       Port: 8080
     66        •       Auth: .htpasswd with realm-based routing
     67        •       User/group: tracd
     68        •       PATH includes Git for ticket/repo integration
     69
     70=== Gitolite ===
     71        •       Uses system user git
     72        •       Admin pubkey bootstrap from gitolite-admin.pub
     73        •       umask 0027 ensures private, group-readable repos
     74
     75=== Certbot ===
     76        •       Auto-manages TLS for kokyou.dev
     77        •       Renewed certs are made readable by ssl-cert group
     78
     79=== nginx ===
     80
     81Reverse proxy setup with:
     82        •       SSL termination for kokyou.dev
     83        •       Proxy to Trac (http://127.0.0.1:8080)
     84        •       Git over HTTP using git-http-backend via fcgiwrap
     85        •       Basic HTTP auth for repo endpoints
     86
     87Example Git locations:
     88        •       /oaichannel.git
     89        •       /public_guix_channel.git
     90
     91All secured via .htpasswd.
     92
     93=== fcgiwrap ===
     94        •       Wraps git-http-backend to allow nginx to serve bare repos.
     95        •       Runs as git:git
     96
     97=== WireGuard VPN ===
     98        •       Interface: 10.0.0.1
     99        •       Peer: wintermute at 10.0.0.2
     100        •       Uses private key from /srv/wg/wg_armitage_prv.key
     101
     102=== Xorg Configuration ===
     103
     104Keyboard layout is set to us with altgr-intl variant.
     105
     106== Boot and Init ==
     107
     108=== Bootloader ===
     109        •       grub-efi-bootloader
     110        •       EFI target: /boot/efi
     111
     112=== Initrd ===
     113        •       Adds virtio_scsi to support virtio disks (used in QEMU)
     114
     115== Summary ==
     116
     117This system provides a secure, lean, and fully declarative infrastructure combining modern development tools with reproducibility and control. Key benefits include:
     118        •       Separation of concerns across services
     119        •       Reproducible and declarative service setup
     120        •       Git and Trac integration via FastCGI
     121        •       TLS automation with Certbot
     122        •       Secure VPN access
     123        •       Snapshot-friendly Btrfs setup