Jobb söker jobb åt dig på StudentConsulting. Varje månad skickas tio ansökningar till jobb som matchar din profil där (Matcha jobb), och varje ansökan kontrolleras i ditt konto. Månadens tio jobb samlas i en textfil med jobb-ID, typ av jobb, stad och omfattning. Filen kan du ladda ner eller få mejlad, till exempel som underlag för din aktivitetsrapport.
Allt körs i containern, inklusive webbläsaren som söker jobben. Du behöver inget Cloudflare-konto.
docker.io (Debian/Ubuntu) eller motsvarande. Podman fungerar också.docker-compose.yml. Klistra in innehållet nedan.ADMIN_PASSWORD till ett eget lösenord på minst 8 tecken.docker compose up -d. Första gången laddas imagen ner, och den är stor eftersom webbläsaren ingår.http://localhost:8787 och logga in.services:
jobb:
image: docker.io/driftaegis/jobb:1
restart: unless-stopped
ports:
- "8787:8787"
shm_size: "1gb"
environment:
PUBLIC_URL: "http://localhost:8787"
AUTH_MODE: "password"
ADMIN_PASSWORD: "change-me-to-a-long-password"
CF_ACCESS_TEAM_DOMAIN: ""
CF_ACCESS_AUD: ""
BROWSER_MODE: "bundled"
CLOUDFLARE_API_TOKEN: ""
CLOUDFLARE_ACCOUNT_ID: ""
SMTP_HOST: ""
SMTP_PORT: "587"
SMTP_USER: ""
SMTP_PASSWORD: ""
volumes:
- jobb-data:/data
tunnel:
image: docker.io/cloudflare/cloudflared:latest
profiles: ["tunnel"]
restart: unless-stopped
command: tunnel --no-autoupdate run
environment:
TUNNEL_TOKEN: ""
depends_on:
- jobb
volumes:
jobb-data:
jobbansokningar_ÅÅÅÅ-MM-DD.txt (datumet är dagen då den tionde ansökan verifierades). Den finns under Översikt och Månadsfiler, och skickas med e-post om du har angett mottagare under System.Välj med AUTH_MODE.
password (standard): en inloggningssida med lösenordet i ADMIN_PASSWORD. Sessionen gäller i 30 dagar. Om du byter lösenord loggas alla ut.
cloudflare-access: Cloudflare Access sköter inloggningen, och Jobb kontrollerar den signerade Access-token själv. Det kräver ett Cloudflare-konto med en domän:
http://jobb:8787. Kopiera tunnelns token till TUNNEL_TOKEN.CF_ACCESS_AUD och teamdomänen till CF_ACCESS_TEAM_DOMAIN, och sätt AUTH_MODE: "cloudflare-access".docker compose --profile tunnel up -dVälj med BROWSER_MODE.
bundled (standard): Chrome finns i imagen. Inget mer behövs. shm_size: "1gb" ger Chrome det delade minne den behöver.cloudflare: Cloudflare Browser Rendering kör webbläsaren. Imagen blir då inte mindre, men datorn som kör containern slipper köra Chrome. Fyll i CLOUDFLARE_API_TOKEN (behörighet Browser Rendering: Edit) och CLOUDFLARE_ACCOUNT_ID. Browser Rendering debiteras per webbläsartimme utöver Cloudflares gratisnivå.Variabler i compose-filen:
| Variabel | Krävs | Standard | Betydelse |
|---|---|---|---|
PUBLIC_URL |
Nej | http://localhost:8787 |
Adressen du öppnar Jobb på. Används i e-post. |
AUTH_MODE |
Nej | password |
password eller cloudflare-access. |
ADMIN_PASSWORD |
Med password |
– | Minst 8 tecken, gärna betydligt längre. |
CF_ACCESS_TEAM_DOMAIN, CF_ACCESS_AUD |
Med cloudflare-access |
– | Se ovan. |
BROWSER_MODE |
Nej | bundled |
bundled eller cloudflare. |
CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID |
Med cloudflare |
– | Se ovan. |
SMTP_HOST |
För e-post | – | Utgående e-postserver, t.ex. din e-postleverantörs SMTP. |
SMTP_PORT |
Nej | 587 |
587 (STARTTLS) eller 465 (TLS). |
SMTP_USER, SMTP_PASSWORD |
För e-post | – | Inloggning till SMTP-servern. Många leverantörer kräver ett appspecifikt lösenord. |
JOBB_CONFIG_KEY |
Nej | skapas automatiskt | Nyckel som krypterar inställningarna i databasen. Skapas första gången och sparas i /data/config-key. |
PORT |
Nej | 8787 |
Porten inne i containern. |
Inställningar som görs under System i webbläsaren, och sparas krypterat:
Värden som du sätter som miljövariabler (STUDENTCONSULTING_EMAIL, STUDENTCONSULTING_PASSWORD, STUDENTCONSULTING_AUTOSUBMIT, NOTIFY_EMAIL_TO, NOTIFY_EMAIL_FROM, NOTIFY_EMAIL_MODE) går före det som sparas i System.
Vill du inte ha värden som lösenord i compose-filen lägger du dem som NAMN=värde-rader i filen import.env i datavolymen (den som monteras på /data) och startar om containern. Vid starten sparas värdena i /data/settings.env, som bara containern kan läsa, och import.env raderas. För att ändra ett värde senare lägger du en ny import.env med bara den raden. En rad med NAMN= och inget värde tar bort inställningen. Värden som är ifyllda i compose-filen gäller före sparade värden.
/data: databasen (SQLite), bevisen för varje ansökan, Workflow-tillståndet och krypteringsnyckeln.docker compose stop, kopiera volymen och kör docker compose start. Följ med /data/config-key, annars går de sparade inställningarna inte att läsa.docker compose pull && docker compose up -d. Databasmigreringar körs automatiskt vid start.1 ger alla uppdateringar inom version 1, 1.0 bara rättningar och 1.0.0 exakt en version.workerd, samma runtime som Cloudflare använder, via wrangler dev --local (Miniflare). D1, R2 och Workflow-tillståndet blir lokala filer under /data.wrangler dev startar inte cron-körningar av sig själv. Därför anropar docker/scheduler.mjs workerns schemalagda körning 09:00 UTC varje dag, och workern agerar bara den 10:e–13:e.XDG_CACHE_HOME, och dess bibliotek kommer från Debians apt. Den startas med --no-sandbox (CI=true) eftersom containern inte har användarnamnrymder. Med BROWSER_MODE=cloudflare blir bindningen en fjärrbindning (remote: true) mot ditt konto.docker/container-entry.ts ger workern samma EMAIL-gränssnitt via SMTP över cloudflare:sockets. Den skickar en multipart-mejl med .txt-filen som bilaga, med STARTTLS eller TLS och AUTH LOGIN.HttpOnly, SameSite=Strict). Access-läget kontrollerar RS256-signatur, utfärdare och AUD.JOBB_CONFIG_KEY med HKDF. Lösenord visas aldrig igen efter att de har sparats.node:22-bookworm-slim, kör som användaren node och har en healthcheck mot /api/health. Den byggs i två steg, så att bara den neutraliserade källkoden hamnar i det färdiga lagret.wrangler dev är en utvecklingsserver som kör en process på en maskin. Det räcker för en person. StudentConsultings sidor kan ändras, och då kan sökningen sluta fungera tills imagen uppdateras. Jobb stoppar då hellre än gissar, och felet syns under Körningar.docker compose logs -f. Varje körning, ansökan och försök med felkod finns under Körningar i gränssnittet.1.1.2
tools/render.mjs skriver varje ifylld fil i en loop tills alla byte är skrivna, så att en kort skrivning inte kan lämna en avkortad fil.1.1.1
tools/render.mjs läser och skriver varje fil genom samma filbeskrivare, så att filen inte kan bytas ut mellan kontroll och skrivning.1.1.0
/data/import.env i stället för i compose-filen. De sparas i /data/settings.env och importfilen raderas.docker build -t jobb ..1.0.0
/data och den månatliga körningen startad inne i containern.BROWSER_MODE: bundled (Chrome i imagen) eller cloudflare (Cloudflare Browser Rendering).AUTH_MODE: password eller cloudflare-access, med valfri Cloudflare Tunnel.jobbansokningar_ÅÅÅÅ-MM-DD.txt med jobb-ID, jobbtyp, stad och omfattning. Den finns i översikten och kan mejlas till en eller flera mottagare.MIT.