diff options
Diffstat (limited to 'README.txt')
| -rw-r--r-- | README.txt | 84 |
1 files changed, 70 insertions, 14 deletions
@@ -1,18 +1,74 @@ -================================================================================ -SERVER STACK FOR https://doan.luuduct.ai (stack) -================================================================================ +Copyright (C) 2026 Doan Luu Duc Tai <doan@luuduct.ai> -Personal infrastructure stack. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. -LICENSE --------------------------------------------------------------------------------- -All software, configuration files, and documentation in this repository are -licensed under the GNU Affero General Public License v3.0 or later -(AGPL-3.0-or-later). See the LICENSE file for details. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. -Licensing Exceptions & Public Domain Dedications: +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <https://www.gnu.org/licenses/>. -- www/.well-known/openpgpkey/**: - Public cryptographic key material and Web Key Directory endpoints are - dedicated to the public domain under CC0 1.0 Universal: - https://creativecommons.org/publicdomain/zero/1.0/ +STACK + + Personal web services, developed and managed through a root Cargo workspace. + Copyright (C) 2026 Doan Luu Duc Tai <doan@luuduct.ai> + GNU Affero General Public License, version 3 or later. See LICENSE. + +GETTING STARTED + + Install Rust through rustup, Podman, Git, and GnuPG on a Linux development + machine. The pinned toolchain includes rustfmt, Clippy, and the static + x86_64 Linux target. + + From this directory: + + cargo stack dev + cargo stack status + cargo stack down + + Browse http://localhost:8080, /git/, and /search/. + A fresh checkout generates a private .env automatically. + Local mode binds only loopback and does not request public certificates. + +DEVELOPMENT AND PRODUCTION + + src/ holds the Rust management command. Future Rust application backends + belong in crates/. Add each crate to the root workspace explicitly and + inherit its strict workspace lints. + + infra/ holds service definitions, proxy configuration, container sources, + and the production user service. web/ holds the public website and WKD. + docs/ contains plaintext operations and policy documentation. + + Only .env holds configured secrets. .env.example documents the keys. + var/ contains private persistent data, container storage, temporary work, + and exports. Generated TLS private keys are runtime data under var/. + .env, var/, .tools/, target/, bin/, and dist/ are excluded from Git. + + The three existing services are Caddy, cgit, and SearXNG. The management + command is Rust. SearXNG and the cgit container's upstream supervisor retain + their third-party Python implementation. No first-party Python is needed. + + Build and test on the development machine. Deploy prebuilt release + archives. The production host needs Podman, Git, and GnuPG, but no Rust + toolchain, Cargo, Compose, or Docker daemon. + +CHECKS AND LICENSES + + cargo install --locked --version 0.20.2 cargo-deny --root .tools + cargo install --locked --version 0.9.3 --features cli cargo-about --root .tools + cargo stack check + cargo stack release + + Check runs formatting, Clippy, tests, rustdoc, cargo-deny, and cargo-about. + THIRD-PARTY-LICENSES.html is generated from Cargo.lock and about.hbs. + Human-readable license headings use GNU's names. SPDX identifiers and + original third-party legal texts retain their exact spelling. + + Detailed manual backup, recovery, deployment, and host setup instructions + are in docs/OPERATIONS.txt. Read docs/POLICY.txt before changing conventions. |
