aboutsummaryrefslogtreecommitdiff
path: root/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'README.txt')
-rw-r--r--README.txt84
1 files changed, 70 insertions, 14 deletions
diff --git a/README.txt b/README.txt
index a461850..70a5931 100644
--- a/README.txt
+++ b/README.txt
@@ -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.