think-greaterchiangmai file uploader
This commit is contained in:
@@ -61,6 +61,7 @@
|
|||||||
};
|
};
|
||||||
packages.think = pkgs.think-gtcm;
|
packages.think = pkgs.think-gtcm;
|
||||||
packages.think-be = pkgs.think-backend-gtcm;
|
packages.think-be = pkgs.think-backend-gtcm;
|
||||||
|
packages.file-uploader = pkgs.gtcm-file-uploader;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ let
|
|||||||
R2_BUCKET = config.clan.core.vars.generators.greaterchiangmai-s3.files.bucket.value;
|
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_ENDPOINT = config.clan.core.vars.generators.greaterchiangmai-s3.files.endpoint.value;
|
||||||
|
|
||||||
|
R2_BUCKET_NAME = R2_BUCKET;
|
||||||
|
|
||||||
LOG_CHANNEL = "stack";
|
LOG_CHANNEL = "stack";
|
||||||
LOG_LEVEL = "debug";
|
LOG_LEVEL = "debug";
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,30 @@
|
|||||||
let
|
let
|
||||||
cfg = config.services.think-backend-greaterchiangmai;
|
cfg = config.services.think-backend-greaterchiangmai;
|
||||||
think-backend-gtcm = pkgs.think-backend-gtcm.override { dataDir = cfg.dataDir; };
|
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";
|
defaultUser = "gtcm";
|
||||||
defaultGroup = "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 = [
|
environment.systemPackages = [
|
||||||
artisan-be
|
artisan-be
|
||||||
];
|
];
|
||||||
@@ -244,6 +281,8 @@ in
|
|||||||
"d ${cfg.dataDir}/storage/framework/views 0700 ${cfg.user} ${cfg.group} - -"
|
"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/logs 0700 ${cfg.user} ${cfg.group} - -"
|
||||||
"d ${cfg.dataDir}/storage/uploads 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 = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
@@ -271,6 +310,12 @@ in
|
|||||||
"~ \\.(js|css|gif|png|ico|jpg|jpeg)$" = {
|
"~ \\.(js|css|gif|png|ico|jpg|jpeg)$" = {
|
||||||
extraConfig = "expires 365d;";
|
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: {
|
final: prev: {
|
||||||
think-gtcm = final.callPackage ./think-gtcm.nix { };
|
think-gtcm = final.callPackage ./think-gtcm.nix { };
|
||||||
think-backend-gtcm = final.callPackage ./think-backend-gtcm.nix { php = final.php83; };
|
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