init
Some checks failed
/ upload (release) Failing after 7s

This commit is contained in:
pavel 2026-02-13 18:06:48 +01:00
commit 69e0484f8d
5 changed files with 55 additions and 3 deletions

View file

@ -1,4 +1,5 @@
DATABASE_URL=postgres://postgres:postgres@localhost:5432/chattz
PORT=3000
# Authentik OIDC app values
OIDC_CLIENT_ID=replace-me

View file

@ -0,0 +1,43 @@
on:
release:
types: [published]
jobs:
upload:
runs-on: host
permissions:
packages: write
steps:
- uses: actions/setup-node@v6
with:
node-version: 24
- uses: actions/checkout@v6
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Cache Cargo target
uses: actions/cache@v4
with:
path: target/
key: ${{ runner.os }}-cargo-target-${{ hashFiles('Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-target-
- run: |
cd frontend
npm install
npm run build
- run: ~/.cargo/bin/cargo build -r
- run: |
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus
systemctl --user stop discord
cp target/release/discord ~/discord/discord
chmod +x ~/discord/discord
systemctl --user start discord

View file

@ -49,8 +49,8 @@ cargo run
Migrations are applied automatically during startup.
Server starts on `http://localhost:3000`.
Web UI is available at `http://localhost:3000/`.
Server binds to `0.0.0.0:${PORT}` (defaults to `3000`).
Web UI is available at `http://localhost:${PORT}/`.
## Authentik setup notes
@ -58,6 +58,8 @@ Create an Authentik OAuth2/OIDC provider + application and set:
- Redirect URI: `http://localhost:3000/auth/callback`
- Scopes including at least: `openid profile email`
If you change `PORT`, update `OIDC_REDIRECT_URL` and this redirect URI to match.
Then copy provider endpoints into env:
- `OIDC_AUTHORIZE_URL`
- `OIDC_TOKEN_URL`

View file

@ -2,6 +2,7 @@ use anyhow::{Context, Result};
#[derive(Clone, Debug)]
pub struct Settings {
pub port: u16,
pub database_url: String,
pub oidc_client_id: String,
pub oidc_client_secret: String,
@ -21,6 +22,10 @@ pub struct Settings {
impl Settings {
pub fn from_env() -> Result<Self> {
Ok(Self {
port: std::env::var("PORT")
.unwrap_or_else(|_| "3000".into())
.parse()
.context("PORT must be a valid u16")?,
database_url: required("DATABASE_URL")?,
oidc_client_id: required("OIDC_CLIENT_ID")?,
oidc_client_secret: required("OIDC_CLIENT_SECRET")?,

View file

@ -47,6 +47,7 @@ async fn main() -> anyhow::Result<()> {
http: reqwest::Client::new(),
voice: Arc::new(VoiceHub::default()),
};
let port = state.settings.port;
let app = Router::new()
.route("/health", get(handlers::health))
@ -55,7 +56,7 @@ async fn main() -> anyhow::Result<()> {
.with_state(state)
.layer(TraceLayer::new_for_http());
let addr: SocketAddr = "0.0.0.0:3000".parse()?;
let addr = SocketAddr::from(([0, 0, 0, 0], port));
info!(%addr, "server started");
let listener = tokio::net::TcpListener::bind(addr).await?;