1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# Monzero public repository setup
Three Monzero-owned, read-only public repositories are deployed at
`https://code.monzero.org`:
| Repository | Purpose | Initial local source |
| --- | --- | --- |
| `monzero-core` | Node, wallet CLI, consensus code and release tooling | `/home/pinhead/Projects/Monero-Fork-backups/git-remotes/monzero-core.git` |
| `monzero-gui` | Desktop GUI | `/home/pinhead/Projects/Monzero-Fork-backups/git-remotes/monzero-gui.git` |
| `monzero-gitian-sigs` | Independent reproducible-build assertions and builder public keys | `/home/pinhead/Projects/Monzero-Fork-backups/git-remotes/monzero-gitian-sigs.git` |
Public clone URLs:
- `https://code.monzero.org/monzero-core.git`
- `https://code.monzero.org/monzero-gui.git`
- `https://code.monzero.org/monzero-gitian-sigs.git`
The VPS publishes source browsing through Cgit and cloning through Git smart
HTTP. HTTP redirects to HTTPS, certificate renewal is enabled and tested, and
HTTP write routes are deliberately absent. The repositories retain local
backup `origin` remotes and use `public` for this read-only deployment.
Do not publish these under an individual contributor's account if a Monzero
organization is intended. Create the organization first, enable multifactor
authentication for owners, and retain at least two organization owners.
## Repository controls
Protect `main` in all three repositories:
- disallow force pushes and branch deletion;
- require pull requests and at least one independent approval;
- require passing test/build checks;
- require conversation resolution;
- restrict direct pushes to release administrators;
- enable secret scanning and dependency alerts where the host supports them.
Core release tags should be annotated and signed. Do not allow an automated
workflow to possess a human builder's private Gitian signing key.
## Publishing updates
The public service is intentionally read-only. Commit and push to each local
backup `origin`, then deploy its bare mirror to `/srv/git` over the restricted
administrator SSH connection. Do not expose `git-receive-pack` through Nginx.
The following is retained as the future migration pattern if the projects move
to a hosted forge with protected write access:
```bash
git remote set-url origin https://HOST/MONZERO_ORG/monzero-core.git
git push origin fork/main:main
git push origin monzero-phase0-assets-prototype-20260815
git -C monzero-gui remote set-url origin https://HOST/MONZERO_ORG/monzero-gui.git
git -C monzero-gui push origin main
git -C monzero-gui push origin monzero-gui-phase0-20260815-r1
git -C /home/pinhead/Projects/monzero-gitian-sigs remote set-url origin \
https://HOST/MONZERO_ORG/monzero-gitian-sigs.git
git -C /home/pinhead/Projects/monzero-gitian-sigs push origin main
```
Before changing the local `origin` URLs, retain the local bare remotes as a
separate `backup` remote. Never change or push to the repositories named
`upstream`; they are retained solely for attribution and controlled upstream
comparison.
Update `monzero-gui/.gitmodules` to the final public core URL (or a correct
relative sibling URL), commit that change, and verify a clean recursive clone.
## Signing bootstrap
Each independent builder creates their own signing key on a trusted machine,
publishes only the public key in `monzero-gitian-sigs/gitian-pubkeys/`, and has
its complete fingerprint verified out of band by another maintainer. At least
two independently administered builders must reproduce Linux and Windows
artifacts before those artifacts are marked verified.
The Gitian command requires an explicit source repository:
```bash
MONZERO_GITIAN_SIGS_URL=https://code.monzero.org/monzero-gitian-sigs.git \
contrib/gitian/gitian-build.py --setup --docker \
--url https://code.monzero.org/monzero-core.git BUILDER RELEASE
```
Asset/NFT consensus functionality remains inactive throughout repository and
release setup. Its activation requires the separate review and public-testnet
gates in `MONZERO_PHASE0_STABILIZATION.md`.
|