John's System Configuration

Documentation of personal system configuration patterns and conventions.

Topics

SOCKS5 Proxy via Noodle — stunnel + s5pin.py for reaching remote services as local ports

Modular Shell Configuration

Uses a modular approach to shell configuration rather than one monolithic .bashrc file.

~/.bashrc Pattern

The main ~/.bashrc loops over files in ~/.bashrcs/ and sources them IF they are executable.

Benefits:• Easy enable/disable: chmod +x to enable, chmod -x to disable• Modular: separate concerns into different files• No commenting out blocks of code• Clean organization

Shell preferences

• No colour in the shell prompt or output — plain text only.• PS1 set via ~/.bashrcs/ps1 (executable). Current format: \D{%a %d %b} \u@\h:\w\$ — gives e.g. Fri 06 Mar john@pomelo:~/py/envoy$

Example: API Keys

File: ~/.bashrcs/api_keys

Contains: OpenAI API key exports

Permissions: 700 (read/write/execute for owner only)

Usage in cron: . /home/john/.bashrcs/api_keys — sources the file to load environment variables

System-Level: /etc/rcs/

Similar pattern exists at system level:

• Directory: /etc/rcs/• Run from: rc.local• Purpose: System-level initialization scripts• Same executable flag pattern for enable/disable

Cron Environment

Cron runs with minimal environment — doesn't source ~/.bashrc or ~/.profile

Solution: Explicitly source needed config files in crontab:

. /home/john/.bashrcs/api_keys; python3 orchestrator.py

Mail Infrastructure

IMAP: Dovecot on cv.critchley.biz (port 993 IMAPS). Accessed locally via stunnel on port 143 (/etc/stunnel/stunnel.conf). Envoy connects to hostname imap (resolves to localhost).WebDAV maildir: webdav.critchley.biz/mail/john — used by both Envoy and popit3. Credentials in ~/.netrc.Local SMTP: Postfix on localhost. Some providers (Hotmail, Swisscom/bluewin) block SMTP from this host.

Email Accounts

• envoy@critchley.biz — Envoy's IMAP account• jsr_critchley@hotmail.com — Outlook/Hotmail (SMTP: smtp-mail.outlook.com:587, OAuth2)• john.critchley@bluewin.ch — Swisscom/bluewin account• john@critchley.biz — Primary address

Best Practices

• Keep sensitive files (like api_keys) with 600 or 700 permissions• Use absolute paths in cron jobs• Source only what's needed for each cron job• Document which scripts depend on which config files

version3
updated2026-03-22