Compare commits
4 Commits
inventree-
...
560a79b68e
| Author | SHA1 | Date | |
|---|---|---|---|
| 560a79b68e | |||
| d05c1ffb21 | |||
| 1bc4597e42 | |||
| 51ef0b3ece |
@@ -61,6 +61,7 @@
|
||||
};
|
||||
packages.think = pkgs.think-gtcm;
|
||||
packages.think-be = pkgs.think-backend-gtcm;
|
||||
packages.file-uploader = pkgs.file-uploader;
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
|
||||
clan.core.settings.name = "ramus";
|
||||
# clan.core.settings.name = "ramus";
|
||||
# clan.meta.description = ''
|
||||
# A Hetzner VPS machine own by Alex.
|
||||
# '';
|
||||
|
||||
@@ -21,6 +21,8 @@ let
|
||||
R2_BUCKET = config.clan.core.vars.generators.greaterchiangmai-s3.files.bucket.value;
|
||||
R2_ENDPOINT = config.clan.core.vars.generators.greaterchiangmai-s3.files.endpoint.value;
|
||||
|
||||
R2_BUCKET_NAME = R2_BUCKET;
|
||||
|
||||
LOG_CHANNEL = "stack";
|
||||
LOG_LEVEL = "debug";
|
||||
|
||||
|
||||
@@ -7,6 +7,30 @@
|
||||
let
|
||||
cfg = config.services.think-backend-greaterchiangmai;
|
||||
think-backend-gtcm = pkgs.think-backend-gtcm.override { dataDir = cfg.dataDir; };
|
||||
file-uploader = pkgs.gtcm-file-uploader.override { dataDir = cfg.dataDir; };
|
||||
|
||||
nginxNodeProxyConfig = ''
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header x-webobjects-server-protocol HTTP/1.0;
|
||||
proxy_set_header x-webobjects-remote-host 127.0.0.1;
|
||||
proxy_set_header x-webobjects-server-port $server_port;
|
||||
proxy_set_header x-webobjects-server-name $server_name;
|
||||
proxy_set_header x-webobjects-server-url $scheme://$host;
|
||||
proxy_connect_timeout 90;
|
||||
proxy_send_timeout 90;
|
||||
proxy_read_timeout 90;
|
||||
proxy_buffer_size 64k;
|
||||
proxy_buffers 8 64k;
|
||||
proxy_busy_buffers_size 64k;
|
||||
proxy_temp_file_write_size 64k;
|
||||
client_max_body_size 50m;
|
||||
client_body_buffer_size 128k;
|
||||
'';
|
||||
|
||||
defaultUser = "gtcm";
|
||||
defaultGroup = "gtcm";
|
||||
|
||||
@@ -142,6 +166,19 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.gtcm-file-uploader = {
|
||||
description = "File upload service for think-backend.greaterchiangmai.com";
|
||||
requiredBy = [ "phpfpm-think-backend-gtcm.service" ];
|
||||
before = [ "phpfpm-think-backend-gtcm.service" ];
|
||||
serviceConfig = {
|
||||
User = cfg.user;
|
||||
WorkingDirectory = "${file-uploader}";
|
||||
ExecStart = "${lib.getExe pkgs.nodejs_20} ${file-uploader}/src/be/index.js";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
path = [ pkgs.nodejs_20 ];
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
artisan-be
|
||||
];
|
||||
@@ -244,6 +281,8 @@ in
|
||||
"d ${cfg.dataDir}/storage/framework/views 0700 ${cfg.user} ${cfg.group} - -"
|
||||
"d ${cfg.dataDir}/storage/logs 0700 ${cfg.user} ${cfg.group} - -"
|
||||
"d ${cfg.dataDir}/storage/uploads 0700 ${cfg.user} ${cfg.group} - -"
|
||||
|
||||
"d ${cfg.dataDir}/gtcm-file-uploader/uploads 0700 ${cfg.user} ${cfg.group} - -"
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
@@ -271,6 +310,12 @@ in
|
||||
"~ \\.(js|css|gif|png|ico|jpg|jpeg)$" = {
|
||||
extraConfig = "expires 365d;";
|
||||
};
|
||||
"^~ /initiate-multipart-upload".extraConfig = nginxNodeProxyConfig;
|
||||
"^~ /get-presigned-url".extraConfig = nginxNodeProxyConfig;
|
||||
"^~ /complete-multipart-upload".extraConfig = nginxNodeProxyConfig;
|
||||
"^~ /generate-presigned-url".extraConfig = nginxNodeProxyConfig;
|
||||
"^~ /enable-bucket-cors".extraConfig = nginxNodeProxyConfig;
|
||||
"^~ /upload".extraConfig = nginxNodeProxyConfig;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
40
pkgs/gtcm-file-uploader.nix
Normal file
40
pkgs/gtcm-file-uploader.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
fetchgit,
|
||||
buildNpmPackage,
|
||||
pkgs,
|
||||
dataDir ? "/var/lib/gtcm-file-uploader",
|
||||
}:
|
||||
let
|
||||
repoSrc = fetchgit {
|
||||
url = "https://git.b4l.co.th/newedge/think-greaterchiangmai";
|
||||
rev = "6f8c8d7dfaf5a0c1eb2077de1d6fb35ceaf3d4ec";
|
||||
hash = "sha256-2mCdn8xGjWZrANclctGTmxQhkNc43VzlzMTVwVIFJcM=";
|
||||
};
|
||||
src = "${repoSrc}/upload-large-file";
|
||||
in
|
||||
buildNpmPackage {
|
||||
pname = "gtcm-file-uploader";
|
||||
version = "1.0.0";
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
nodejs_20
|
||||
breakpointHook
|
||||
];
|
||||
|
||||
inherit src;
|
||||
|
||||
npmDepsHash = "sha256-JEp2F1CQfuV9fSYZRdRO+BiOE9dy1ReK6doJcqCuxu4=";
|
||||
|
||||
buildPhase = ''
|
||||
npm install
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out
|
||||
cp -r * $out
|
||||
ln -s ${dataDir}/.env $out/.env
|
||||
ln -s ${dataDir}/gtcm-file-uploader/uploads $out/src/be/uploads
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
final: prev: {
|
||||
think-gtcm = final.callPackage ./think-gtcm.nix { };
|
||||
think-backend-gtcm = final.callPackage ./think-backend-gtcm.nix { php = final.php83; };
|
||||
gtcm-file-uploader = final.callPackage ./gtcm-file-uploader.nix { };
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
fsn1.your-objectstorage.com
|
||||
https://fsn1.your-objectstorage.com
|
||||
Reference in New Issue
Block a user