Yopass
Overview
This guide covers the deployment and configuration of Yopass on Ubuntu 24.04 on Azure using SecureAnyCloud Azure Marketplace images. Yopass is an open source, self hosted service for sharing sensitive information securely and temporarily. A sender types a secret into the web interface, Yopass encrypts it in the browser and returns a one time link, and the recipient opens that link once to reveal the secret, after which it is permanently destroyed. Because encryption and decryption happen client side, the server, this image, and its storage only ever hold opaque ciphertext with a fixed expiry.
The image builds the latest stable Yopass release reproducibly from source at build time (the exact version and source commit are recorded in /opt/yopass/VERSION). The Yopass server runs as a single Go binary under systemd as the unprivileged yopass system user and binds to loopback only (127.0.0.1:1337). Secrets are held in memcached, also bound to loopback (127.0.0.1:11211), so ciphertext lives in memory with a hard time to live and nothing is written to disk. nginx is the sole network facing surface and terminates TLS on port 443, reverse proxying to Yopass.
Yopass is unauthenticated by design. It is a public secret sharing service: there is no admin login, no API key and no database password, so none is ever baked into the image. The only per instance secret material is the TLS private key, which is regenerated for this specific VM on first boot (its Subject Alternative Names include the VM public IP, hostname and 127.0.0.1). No key material is ever shared between instances.
What is included:
The latest stable Yopass release, built from source and run under systemd as the unprivileged yopass system user
The Yopass server bound to loopback only (127.0.0.1:1337) and memcached bound to loopback (127.0.0.1:11211) — neither is network exposed
nginx terminating TLS on :443 and reverse proxying to Yopass, with HSTS and sensible security headers
Port :80 returns a 301 redirect to HTTPS for every path except an unauthenticated /healthz endpoint (HTTP 200) for load balancer probes
A self signed TLS certificate regenerated per VM on first boot (SAN includes the VM public IP + hostname) — replace it with your own CA signed certificate for production
A built in one time self test at /opt/yopass/yopass-selftest.sh that proves the self destruct semantics end to end over TLS
Ubuntu 24.04 LTS base with latest security patches applied at build time
Azure Linux Agent for seamless cloud integration and SSH key injection
24/7 SecureAnyCloud support with guaranteed 24 hour response SLA
Prerequisites
You need the following before you deploy:
- An Azure subscription with permission to deploy virtual machines
- An SSH key pair for administrative access to the VM as the
azureuseraccount - A Network Security Group that allows inbound TCP
443(HTTPS) and80(redirect) from the networks that should reach the service, and22(SSH) from your management network only - A VM size of Standard_B2s or larger (recommended)
Deploy from the Azure Portal
Find the Yopass on Ubuntu 24.04 LTS by SecureAnyCloud image in the Azure Marketplace and select Create.
Choose your subscription, resource group and region. Select a VM size (Standard_B2s or larger) and provide your SSH public key for the azureuser account.
On the Networking tab, allow inbound 443 and 80 from your users, and restrict 22 to your management network.
Select Review + create. When the VM is running, browse to https://<your-public-ip>/.
Deploy from the Azure CLI
Run these commands to deploy the same image from the Azure CLI. Adjust the resource group, location and image URN as needed:
# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:yopass-ubuntu-24-04:default:latest
az vm create \
--resource-group my-yopass-rg \
--name yopass \
--image sac1647283583153:yopass-ubuntu-24-04:default:latest \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku Standard
# then open the required ports
az vm open-port --resource-group my-yopass-rg --name yopass --port 443 --priority 1001
az vm open-port --resource-group my-yopass-rg --name yopass --port 80 --priority 1002Verify the Yopass, memcached and nginx services
SSH in as azureuser. Confirm that the three services are active, that Yopass and memcached are bound to loopback only, and that nginx is the only public listener:
sudo systemctl is-active yopass memcached nginxss -tln | grep -E ':1337 |:11211 |:80 |:443 'The output shows yopass-server on 127.0.0.1:1337 and memcached on 127.0.0.1:11211, both loopback only. nginx listens on 0.0.0.0:80 and 0.0.0.0:443.
Open the Yopass web interface
Browse to https://<your-public-ip>/. The certificate is self-signed and generated per VM, so your browser warns about it the first time. Accept the warning, or install your own certificate as described in Step 12.
The Encrypt message form opens. Type or paste your secret and choose how long it should live. Keep One time download and Generate decryption key enabled for the standard one-click flow.
Share a secret and get a one-time link
Select Encrypt Message. Yopass encrypts the secret in your browser and stores only the ciphertext. It then shows a one-click link that you can share with the recipient.
The secret can be downloaded only once, so do not open the link yourself. A banner on the page reminds you of this.
Reveal the secret once
When the recipient opens the link, Yopass decrypts the secret in their browser and displays it. A clear warning states that the secret will not be accessible again. This is the single permitted view.
Confirm the secret self-destructs
Open the same link a second time. The secret has already been consumed and permanently deleted, so Yopass reports that it does not exist.
Verify the one-time behaviour from the command line
The image ships a self test that proves the self-destruct behaviour end to end over TLS. It creates a one-time secret through the API, reads it once (HTTP 200), then reads it again (HTTP 404). Run it with:
sudo /opt/yopass/yopass-selftest.shThe output confirms the round trip: the first read returns 200 and the second returns 404.
Confirm TLS and inspect the per-instance certificate
Confirm that plain HTTP redirects to HTTPS and that the web UI answers over TLS. Then inspect the per-VM self-signed certificate:
curl -s -o /dev/null -w '%{http_code} -> %{redirect_url}\n' http://127.0.0.1/curl -sk -o /dev/null -w '%{http_code}\n' https://127.0.0.1/sudo openssl x509 -in /etc/nginx/tls/yopass.crt -noout -subject -ext subjectAltNameCheck the installed version and appliance info
The VM records the exact Yopass version and source commit built into the image, along with the per-VM appliance details. Read them with:
cat /opt/yopass/VERSIONsudo cat /root/yopass-info.txtHow the appliance is wired
Yopass server. A single Go binary at /opt/yopass/yopass-server, run by yopass.service as the unprivileged yopass user and bound to 127.0.0.1:1337. It serves both the API and the web frontend from /opt/yopass/public.
memcached. Runs as memcached.service, bound to 127.0.0.1:11211, and holds only ciphertext with a fixed time to live. Yopass requires memcached, so yopass.service declares a dependency on it.
nginx. Runs as nginx.service. It terminates TLS on :443, reverse proxies to Yopass, redirects :80 to HTTPS, and serves an unauthenticated /healthz for load balancer probes.
First boot. yopass-firstboot.service runs once on first boot. It regenerates the per-VM self-signed TLS certificate, starts the services, proves the one-time round trip and writes /root/yopass-info.txt.
Use your own domain and a trusted certificate (production)
The image ships a self-signed certificate, so traffic is encrypted out of the box, but browsers warn about it. For production, point a DNS name at the VM and install a CA-signed certificate. With your own domain, you can obtain a free certificate from Let's Encrypt:
sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d <your-domain>Certbot installs the certificate into nginx and sets up automatic renewal. Yopass builds share links from the host the browser used, so moving to your own domain needs no application configuration change.
Managing the Yopass service
Restart the service and read its recent logs with:
sudo systemctl restart yopasssudo journalctl -u yopass.service --no-pager | tail -20To change server options, such as the maximum secret length or forcing one-time secrets, edit the ExecStart line in /etc/systemd/system/yopass.service. Then run sudo systemctl daemon-reload && sudo systemctl restart yopass.
Security recommendations
- Restrict SSH. Allow inbound
22only from your management network. Keep443, and80for the redirect, open to your users. - Install a trusted certificate. Replace the self-signed certificate with a CA-signed one (Step 12), so recipients are not trained to click through browser warnings.
- Keep secrets short-lived. The shortest expiry that works for your recipients gives the smallest window of exposure. One time download is on by default.
- Send the link and the key separately when you use the short link form. Intercepting one channel is then not enough to reveal a secret.
- Keep the image updated. Unattended security upgrades remain enabled, so the OS keeps receiving patches.
Support and Licensing
Yopass is open source software distributed under the Apache License 2.0. This image bundles the upstream Yopass release unmodified; the licence and notice files are retained on the image under /opt/yopass/. SecureAnyCloud packaging, hardening and support are provided by SecureAnyCloud.
Deploy on Azure
Find this image on the Azure Marketplace and deploy it in minutes. See secureanycloud.com for the full catalogue.
Need Help?
SecureAnyCloud provides 24/7 support with a guaranteed 24 hour response SLA. Contact us through secureanycloud.com for deployment assistance, configuration help or any questions about this image.
Deploy on Azure
Launch Yopass on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com