-
-
Notifications
You must be signed in to change notification settings - Fork 18.3k
Add trilium server and module #75047
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
fa851fd
trilium: 0.33.6 -> 0.37.8
kampka 184339f
trilium: Rename package to trilium-desktop
kampka a84c859
trilium-server: init at 0.37.8
kampka 1f060b4
trilium-server: Patch logger to use console instead of rolling files
kampka 82f038d
trilium-server: Add module
kampka 9f97485
trilium-server: Add nginx reverse proxy configuration to module
kampka 39ecfaf
trilium-server: Add passthru tests
kampka a7db640
trilium: 0.37.8 -> 0.38.2
kampka ebf3f1f
trilium: Pin platforms to x86_64 linux
kampka File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,137 @@ | ||
| { config, lib, pkgs, ... }: | ||
|
|
||
| let | ||
| cfg = config.services.trilium-server; | ||
| configIni = pkgs.writeText "trilium-config.ini" '' | ||
| [General] | ||
| # Instance name can be used to distinguish between different instances | ||
| instanceName=${cfg.instanceName} | ||
|
|
||
| # Disable automatically generating desktop icon | ||
| noDesktopIcon=true | ||
|
|
||
| [Network] | ||
| # host setting is relevant only for web deployments - set the host on which the server will listen | ||
| host=${cfg.host} | ||
| # port setting is relevant only for web deployments, desktop builds run on random free port | ||
| port=${toString cfg.port} | ||
| # true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure). | ||
| https=false | ||
| ''; | ||
| in | ||
| { | ||
|
|
||
| options.services.trilium-server = with lib; { | ||
| enable = mkEnableOption "trilium-server"; | ||
|
|
||
| dataDir = mkOption { | ||
| type = types.str; | ||
| default = "/var/lib/trilium"; | ||
| description = '' | ||
| The directory storing the nodes database and the configuration. | ||
| ''; | ||
| }; | ||
|
|
||
| instanceName = mkOption { | ||
| type = types.str; | ||
| default = "Trilium"; | ||
| description = '' | ||
| Instance name used to distinguish between different instances | ||
| ''; | ||
| }; | ||
|
|
||
| host = mkOption { | ||
| type = types.str; | ||
| default = "127.0.0.1"; | ||
| description = '' | ||
| The host address to bind to (defaults to localhost). | ||
| ''; | ||
| }; | ||
|
|
||
| port = mkOption { | ||
| type = types.int; | ||
| default = 8080; | ||
| description = '' | ||
| The port number to bind to. | ||
| ''; | ||
| }; | ||
|
|
||
| nginx = mkOption { | ||
| default = {}; | ||
| description = '' | ||
| Configuration for nginx reverse proxy. | ||
| ''; | ||
|
|
||
| type = types.submodule { | ||
| options = { | ||
| enable = mkOption { | ||
| type = types.bool; | ||
| default = false; | ||
| description = '' | ||
| Configure the nginx reverse proxy settings. | ||
| ''; | ||
| }; | ||
|
|
||
| hostName = mkOption { | ||
| type = types.str; | ||
| description = '' | ||
| The hostname use to setup the virtualhost configuration | ||
| ''; | ||
| }; | ||
| }; | ||
| }; | ||
| }; | ||
| }; | ||
|
|
||
| config = lib.mkIf cfg.enable (lib.mkMerge [ | ||
| { | ||
| meta.maintainers = with lib.maintainers; [ kampka ]; | ||
|
|
||
| users.groups.trilium = {}; | ||
| users.users.trilium = { | ||
aanderse marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| description = "Trilium User"; | ||
| group = "trilium"; | ||
| home = cfg.dataDir; | ||
| isSystemUser = true; | ||
| }; | ||
|
|
||
| systemd.services.trilium-server = { | ||
| wantedBy = [ "multi-user.target" ]; | ||
| environment.TRILIUM_DATA_DIR = cfg.dataDir; | ||
| serviceConfig = { | ||
| ExecStart = "${pkgs.trilium-server}/bin/trilium-server"; | ||
| User = "trilium"; | ||
| Group = "trilium"; | ||
| PrivateTmp = "true"; | ||
| }; | ||
| }; | ||
|
|
||
| systemd.tmpfiles.rules = [ | ||
| "d ${cfg.dataDir} 0750 trilium trilium - -" | ||
aanderse marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| "L+ ${cfg.dataDir}/config.ini - - - - ${configIni}" | ||
| ]; | ||
|
|
||
| } | ||
|
|
||
| (lib.mkIf cfg.nginx.enable { | ||
| services.nginx = { | ||
| enable = true; | ||
| virtualHosts."${cfg.nginx.hostName}" = { | ||
| locations."/" = { | ||
| proxyPass = "http://${cfg.host}:${toString cfg.port}/"; | ||
| extraConfig = '' | ||
| proxy_http_version 1.1; | ||
| proxy_set_header Upgrade $http_upgrade; | ||
| proxy_set_header Connection 'upgrade'; | ||
| proxy_set_header Host $host; | ||
| proxy_cache_bypass $http_upgrade; | ||
| ''; | ||
| }; | ||
| extraConfig = '' | ||
| client_max_body_size 0; | ||
| ''; | ||
| }; | ||
| }; | ||
| }) | ||
| ]); | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| import ./make-test-python.nix ({ ... }: { | ||
| name = "trilium-server"; | ||
| nodes = { | ||
| default = { | ||
| services.trilium-server.enable = true; | ||
| }; | ||
| configured = { | ||
| services.trilium-server = { | ||
| enable = true; | ||
| dataDir = "/data/trilium"; | ||
| }; | ||
| }; | ||
|
|
||
| nginx = { | ||
| services.trilium-server = { | ||
| enable = true; | ||
| nginx.enable = true; | ||
| nginx.hostName = "trilium.example.com"; | ||
| }; | ||
| }; | ||
| }; | ||
|
|
||
| testScript = | ||
| '' | ||
| start_all() | ||
|
|
||
| with subtest("by default works without configuration"): | ||
| default.wait_for_unit("trilium-server.service") | ||
|
|
||
| with subtest("by default available on port 8080"): | ||
| default.wait_for_unit("trilium-server.service") | ||
| default.wait_for_open_port(8080) | ||
| # we output to /dev/null here to avoid a python UTF-8 decode error | ||
| # but the check will still fail if the service doesn't respond | ||
| default.succeed("curl --fail -o /dev/null 127.0.0.1:8080") | ||
|
|
||
| with subtest("by default creates empty document"): | ||
| default.wait_for_unit("trilium-server.service") | ||
| default.succeed("test -f /var/lib/trilium/document.db") | ||
|
|
||
| with subtest("configured with custom data store"): | ||
| configured.wait_for_unit("trilium-server.service") | ||
| configured.succeed("test -f /data/trilium/document.db") | ||
|
|
||
| with subtest("nginx with custom host name"): | ||
| nginx.wait_for_unit("trilium-server.service") | ||
| nginx.wait_for_unit("nginx.service") | ||
|
|
||
| nginx.succeed( | ||
| "curl --resolve 'trilium.example.com:80:127.0.0.1' http://trilium.example.com/" | ||
| ) | ||
| ''; | ||
| }) |
69 changes: 69 additions & 0 deletions
69
pkgs/applications/office/trilium/0001-Use-console-logger-instead-of-rolling-files.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| From 5be803a1171855f976a5b607970fa3949db72181 Mon Sep 17 00:00:00 2001 | ||
| From: Christian Kampka <christian@kampka.net> | ||
| Date: Mon, 9 Dec 2019 19:40:27 +0100 | ||
| Subject: [PATCH] Use console logger instead of rolling files | ||
|
|
||
| --- | ||
| src/services/log.js | 26 +++----------------------- | ||
| 1 file changed, 3 insertions(+), 23 deletions(-) | ||
|
|
||
| diff --git a/src/services/log.js b/src/services/log.js | ||
| index 1514c209..456c3749 100644 | ||
| --- a/src/services/log.js | ||
| +++ b/src/services/log.js | ||
| @@ -1,35 +1,15 @@ | ||
| "use strict"; | ||
|
|
||
| -const fs = require('fs'); | ||
| -const dataDir = require('./data_dir'); | ||
| - | ||
| -if (!fs.existsSync(dataDir.LOG_DIR)) { | ||
| - fs.mkdirSync(dataDir.LOG_DIR, 0o700); | ||
| -} | ||
| - | ||
| -const logger = require('simple-node-logger').createRollingFileLogger({ | ||
| - errorEventName: 'error', | ||
| - logDirectory: dataDir.LOG_DIR, | ||
| - fileNamePattern: 'trilium-<DATE>.log', | ||
| - dateFormat:'YYYY-MM-DD' | ||
| -}); | ||
| - | ||
| function info(message) { | ||
| // info messages are logged asynchronously | ||
| setTimeout(() => { | ||
| console.log(message); | ||
| - | ||
| - logger.info(message); | ||
| }, 0); | ||
| } | ||
|
|
||
| function error(message) { | ||
| message = "ERROR: " + message; | ||
|
|
||
| - // we're using .info() instead of .error() because simple-node-logger emits weird error for showError() | ||
| - // errors are logged synchronously to make sure it doesn't get lost in case of crash | ||
| - logger.info(message); | ||
| - | ||
| console.trace(message); | ||
| } | ||
|
|
||
| @@ -45,12 +25,12 @@ function request(req) { | ||
| if (req.url.includes(".js.map") || req.url.includes(".css.map")) { | ||
| return; | ||
| } | ||
| - | ||
| - logger.info(req.method + " " + req.url); | ||
| + if(process.env.DEBUG) | ||
| + console.log(req.method + " " + req.url); | ||
| } | ||
|
|
||
| module.exports = { | ||
| info, | ||
| error, | ||
| request | ||
| -}; | ||
| \ No newline at end of file | ||
| +}; | ||
| -- | ||
| 2.23.0 | ||
|
|
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.