85 lines
2.6 KiB
Markdown
85 lines
2.6 KiB
Markdown
|
|
# Personal Proxmox LXC Scripts
|
||
|
|
|
||
|
|
This repo is a small personal version of the `community-scripts` pattern:
|
||
|
|
|
||
|
|
- `ct/` contains host-side Proxmox creation scripts
|
||
|
|
- `install/` contains the in-container install logic
|
||
|
|
|
||
|
|
## OpenCode LXC
|
||
|
|
|
||
|
|
`ct/opencode.sh` creates a Debian LXC and installs the `opencode` CLI for a normal user.
|
||
|
|
|
||
|
|
It now follows the upstream `community-scripts` host-side flow more closely, including the standard `Default Install`, `Advanced Install`, and `User Defaults` entry points.
|
||
|
|
|
||
|
|
### What it does
|
||
|
|
|
||
|
|
- picks a Debian 12 template from your configured Proxmox storages
|
||
|
|
- creates an unprivileged LXC with sensible defaults for a coding box
|
||
|
|
- installs common CLI tooling (`git`, `ripgrep`, `fd`, `curl`, `build-essential`)
|
||
|
|
- installs OpenCode via the official installer
|
||
|
|
- creates a writable `/workspace` directory owned by the `opencode` user
|
||
|
|
- enables a systemd-managed OpenCode web interface on boot
|
||
|
|
|
||
|
|
### Usage
|
||
|
|
|
||
|
|
Run on the Proxmox host as `root`:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
bash ct/opencode.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
Example with overrides:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
CTID=220 \
|
||
|
|
HOSTNAME=opencode-dev \
|
||
|
|
BRIDGE=vmbr1 \
|
||
|
|
CONTAINER_STORAGE=local-lvm \
|
||
|
|
TEMPLATE_STORAGE=local \
|
||
|
|
MEMORY=8192 \
|
||
|
|
CORES=4 \
|
||
|
|
DISK_GB=24 \
|
||
|
|
OPENCODE_USER=dev \
|
||
|
|
OPENCODE_WEB_PORT=4096 \
|
||
|
|
bash ct/opencode.sh
|
||
|
|
```
|
||
|
|
|
||
|
|
You can also use the upstream-style `var_*` overrides, for example `var_cpu`, `var_ram`, `var_disk`, `var_brg`, `var_net`, `var_ctid`, and `var_hostname`.
|
||
|
|
|
||
|
|
### Common Variables
|
||
|
|
|
||
|
|
- `CTID` default `120`
|
||
|
|
- `HOSTNAME` default `opencode`
|
||
|
|
- `CORES` default `2`
|
||
|
|
- `MEMORY` default `4096`
|
||
|
|
- `DISK_GB` default `12`
|
||
|
|
- `BRIDGE` default `vmbr0`
|
||
|
|
- `IP_CONFIG` default `dhcp`
|
||
|
|
- `TEMPLATE_STORAGE` auto-selects first storage with `vztmpl`
|
||
|
|
- `CONTAINER_STORAGE` auto-selects first storage with `rootdir`
|
||
|
|
- `OPENCODE_USER` default `opencode`
|
||
|
|
- `OPENCODE_VERSION` empty means latest release
|
||
|
|
- `OPENCODE_WEB_HOSTNAME` default `0.0.0.0`
|
||
|
|
- `OPENCODE_WEB_PORT` default `4096`
|
||
|
|
- `OPENCODE_SERVER_USERNAME` default `opencode`
|
||
|
|
- `OPENCODE_SERVER_PASSWORD` optional basic-auth password for the web UI
|
||
|
|
- `SSH_PUBLIC_KEY_FILE` optional path to a host public key file to inject into the CT
|
||
|
|
|
||
|
|
### Community-Scripts Behavior
|
||
|
|
|
||
|
|
- supports the standard `community-scripts` settings flow on the Proxmox host
|
||
|
|
- supports `default.vars` and app-default handling from the shared `build.func` base
|
||
|
|
- still accepts the legacy environment variable names documented above for quick one-shot runs
|
||
|
|
|
||
|
|
### After Creation
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pct enter 120
|
||
|
|
su - opencode
|
||
|
|
opencode
|
||
|
|
```
|
||
|
|
|
||
|
|
The web interface is started automatically at boot and listens on `http://<ct-ip>:4096` by default.
|
||
|
|
|
||
|
|
Then configure a provider inside OpenCode with `/connect`, or set your provider credentials manually.
|