Setup APT Repository (Sonatype Nexus3)
An alternative solution to host a repository for APT which is more easy to maintain is using Sonatype's Nexus3 Repository Manager. Firstly install Sonatype's Nexus3:
Installation
- Download Debian 12 Server from here: debian.org/distrib and install your machine.
- Install Java 17:
sudo apt install openjdk-17-jdk
- Add user
nexus
to run Nexus3:adduser nexus
- Download the latest Nexus3 from
https://help.sonatype.com/en/download.html
- Unpack it to
/opt/
:tar xzvf <downloaded-tar-package>.tar.gz -C /opt
- Change owner of unpacked files:
chown nexus -R /opt/nexus-<version>
- Make binary executeable:
chmod +x /opt/nexus-<version>/bin/nexus
- Create systemservice with the name
nexus.service
and copy it to/etc/systemd/system
(keep in mind to add the nexus version):nexus.service
[Unit] Description=nexus service After=network.target [Service] Type=forking Environment="NEXUS_SECRETS_KEY_FILE=/opt/sonatype-work/nexus3/keystores/nexus.secrets.json" LimitNPROC=65536 LimitNOFILE=65536 ExecStart=/opt/nexus-<version>/bin/nexus start ExecStop=/opt/nexus-<version>/bin/nexus stop User=nexus Restart=on-abort TimeoutSec=600 [Install] WantedBy=multi-user.target
cp nexus.service /etc/systemd/system
systemctl start nexus.service
systemctl enable nexus.service
- When everything was successful, enter the webservice with
http://<ip>:8081/
- The password for
admin
is located under/opt/sonatype/sonatype-work/nexus3/admin.password
after entering the password, it's forced to be changed.cat /opt/sonatype/sonatype-work/nexus3/admin.password
The installation of Nexus is now finished!
Then add the repository:
APT Repository (hosted)
- Firstly create a GPG-Key for signing the release file:
- Therefore install
gpg
and generate a key withgpg --gen-key
. Then export the key with to paste it under
APT Settings
:gpg --export-secret-key --armor <KEY-ID> > Key.gpg
- If your key is password-secured enter the passphrase in the field below.
- Then add the name above e.g.
apt
, and set the distribution e.g. tostable
- It's then recommended to upload the public-release-key to a RAW storage to make it easy to download. Therefore export the public key with:
gpg --armor --export <KEY-ID> > Key.gpg
- Finally add the repo to APT:
echo "deb [signed-by=/usr/share/keyrings/your-repo.gpg] https://<your-repo>/repository/apt/ stable main" | sudo tee /etc/apt/sources.list.d/<your-repo>.list
- And add the key:
curl -sS https://<your-repo>/repository/storage/ReleaseKey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/<your-repo>.gpg > /dev/null
- Finished!
Sourced from: