···125126- [Rosenpass](https://rosenpass.eu/), a service for post-quantum-secure VPNs with WireGuard. Available as [services.rosenpass](#opt-services.rosenpass.enable).
12700128## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
129130- `network-online.target` has been fixed to no longer time out for systems with `networking.useDHCP = true` and `networking.useNetworkd = true`.
···125126- [Rosenpass](https://rosenpass.eu/), a service for post-quantum-secure VPNs with WireGuard. Available as [services.rosenpass](#opt-services.rosenpass.enable).
127128+- [c2FmZQ](https://github.com/c2FmZQ/c2FmZQ/), an application that can securely encrypt, store, and share files, including but not limited to pictures and videos. Available as [services.c2fmzq-server](#opt-services.c2fmzq-server.enable).
129+130## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
131132- `network-online.target` has been fixed to no longer time out for systems with `networking.useDHCP = true` and `networking.useNetworkd = true`.
···1+# c2FmZQ {#module-services-c2fmzq}
2+3+c2FmZQ is an application that can securely encrypt, store, and share files,
4+including but not limited to pictures and videos.
5+6+The service `c2fmzq-server` can be enabled by setting
7+```
8+{
9+ services.c2fmzq-server.enable = true;
10+}
11+```
12+This will spin up an instance of the server which is API-compatible with
13+[Stingle Photos](https://stingle.org) and an experimental Progressive Web App
14+(PWA) to interact with the storage via the browser.
15+16+In principle the server can be exposed directly on a public interface and there
17+are command line options to manage HTTPS certificates directly, but the module
18+is designed to be served behind a reverse proxy or only accessed via localhost.
19+20+```
21+{
22+ services.c2fmzq-server = {
23+ enable = true;
24+ bindIP = "127.0.0.1"; # default
25+ port = 8080; # default
26+ };
27+28+ services.nginx = {
29+ enable = true;
30+ recommendedProxySettings = true;
31+ virtualHosts."example.com" = {
32+ enableACME = true;
33+ forceSSL = true;
34+ locations."/" = {
35+ proxyPass = "http://127.0.0.1:8080";
36+ };
37+ };
38+ };
39+}
40+```
41+42+For more information, see <https://github.com/c2FmZQ/c2FmZQ/>.