--- /dev/null
+### Laravel template
+/app/vendor/
+node_modules/
+npm-debug.log
+yarn-error.log
+
+# Laravel 4 specific
+bootstrap/compiled.php
+app/storage/
+
+# Laravel 5 & Lumen specific
+public/storage
+public/hot
+
+# Laravel 5 & Lumen specific with changed public path
+public_html/storage
+public_html/hot
+
+storage/*.key
+.env
+Homestead.yaml
+Homestead.json
+/.vagrant
+.phpunit.result.cache
+
+composer.lock
+.idea
\ No newline at end of file
--- /dev/null
+FROM ubuntu:jammy
+WORKDIR "/application"
+
+ENV TERM=linux
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && apt-get install -y --no-install-recommends gnupg \
+ && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ondrej-php.list \
+ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \
+ && apt-get update \
+ && apt-get -y --no-install-recommends install x11-common pdftk poppler-utils ghostscript netpbm sshfs mupdf-tools php8.1-cli php8.1-fpm php8.1-curl php8.1-exif php8.1-xml php8.1-gd php8.1-ssh php8.1-zip libjpeg-turbo-progs zip unzip \
+ less nano wget bash lynx
+
+COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
+COPY overrides.conf /etc/php/8.1/fpm/pool.d/z-overrides.conf
+COPY --chmod=755 startup /usr/bin/startup
+CMD exec /usr/bin/startup
+STOPSIGNAL SIGQUIT
+EXPOSE 9000
--- /dev/null
+# Installation
+
+On the farming server :
+
+`apt install -y git docker-composer-plugin;mkdir -p /docker/fluidbook-distantstorage;cd /docker/fluidbook-distantstorage;git clone git://git.cubedesigners.com/fluidbook_distantstorage.git .;./update`
\ No newline at end of file
--- /dev/null
+{
+ "name": "fluidbook/distantstorage",
+ "description": "description",
+ "minimum-stability": "dev",
+ "license": "proprietary",
+ "repositories": [
+ {
+ "type": "composer",
+ "url": "https://composer.cubedesigners.com/"
+ }
+ ],
+ "authors": [
+ {
+ "name": "Vincent VANWAELSCAPPEL",
+ "email": "vincent@cubedesigners.com"
+ }
+ ],
+ "autoload": {
+ "psr-4": {
+ "Fluidbook\\DistantStorage\\": "src"
+ }
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=8.0",
+ "fluidbook/tools": "dev-master"
+ }
+}
\ No newline at end of file
--- /dev/null
+<?php
+phpinfo();
\ No newline at end of file
--- /dev/null
+<?php
+die(file_exists('/files/status') && file_exists('/usfiles/status') ? '1' : '0');
\ No newline at end of file
--- /dev/null
+version: '3.1'
+services:
+ php:
+ container_name: fluidbook-distantstorage
+ build: .
+ working_dir: /application
+ environment:
+ TZ: Europe/Paris
+ HOME: /application
+ volumes:
+ - './app/:/application/'
+ - './ssh/:/root/.ssh/'
+ - '/home/fluidbook/data/:/storage/'
+ ports:
+ - '9458:9000'
+ restart: unless-stopped
+ privileged: true
+ networks:
+ - fluidbook-distantstorage
+networks:
+ fluidbook-distantstorage:
+ external:
+ name: fluidbook-distantstorage
\ No newline at end of file
--- /dev/null
+[global]
+; Override default pid file
+pid = /run/php-fpm.pid
+
+; Avoid logs being sent to syslog
+error_log = /proc/self/fd/2
+
+; Set this to php default's max_execution_time to allow children to stop gracefully when fpm is commanded to stop
+; This helps avoiding 502's
+process_control_timeout = 30
+
+; Do not daemonize (eg send process to the background)
+daemonize = no
+
+[www]
+; Access from webserver container is via network, not socket file
+listen = [::]:9000
+
+; Redirect logs to stdout - FPM closes /dev/std* on startup
+access.log = /proc/self/fd/1
+catch_workers_output = yes
+
+; Remove "pool www" decoration from log output (older phpdocker.io containers for php use sed for this)
+decorate_workers_output = no
+
+; Required to allow config-by-environment
+clear_env = no
+
+user = 33
+group = 33
+
+pm = dynamic
+pm.max_children = 80
+pm.start_servers = 24
+pm.min_spare_servers = 20
+pm.max_spare_servers = 40
+pm.max_requests = 1000
--- /dev/null
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+-----END OPENSSH PRIVATE KEY-----
--- /dev/null
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC3kvjNsFj8/D1G2wE6puNcS4VwFHARPmgKNFxgtDy+a+gHcDiuygYhZjJy8lYpo02N7I2kV9Mo3+nWH1Ain1FbjAPVGP5VBwujriFJkfcOev76b8uwVs/xFwdJn3Oc0AnVvu/03tvZv1vVVmAGE/S6Ym9BmCDVWC2pOVdySvt2hmljSoQaZQzPT5DHdwgenbDPU26TmSchFRy/K/a32+juua8P+eceOypi+bzV0K723h4x5teq4rQmsbqFalfUnh0FAYdXbzkTXBfhE/h4D8TkGMkCCgRJSuw5I5SP3XEuDEB24Bzd5HEjAQgrigGE2L697sYEgJkit7WUOQmB1DokgqCc3GgkfUE6/0TKeNeXQv15z7hQ9192Qnjo2Z7qcnebiZrozxo5i7tArJssHekrkMIzF4ujVL0WLLxXt85YAN/AB4A15B1lTM1Cyarp7kFK3mVD7nicJYsCapEgaVa8im6MIJoASg4/qRCrA006LQqC2TyX5wi9mECgJhKCp80= fluidbookfarmer@cubedesigners.com
--- /dev/null
+|1|I3upUS72GkBN0XrvRynC+54Jkjw=|g0RQmSMtyO/SJJur7ff701QpAlk= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIcf3EkFhhbkL74VV3dG/ZN6X7Do+JDfzw0l7VJX6EmuTM3l2oNdg5jDp4vRHT8c9SKVe/JumeiAkIa/h6fVD4Y=
+|1|Lmv+DVNc45mnhZBQFn+lUcaRRiY=|yOB0mGpn2+50dOkb+stX7Ho5ZwQ= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIcf3EkFhhbkL74VV3dG/ZN6X7Do+JDfzw0l7VJX6EmuTM3l2oNdg5jDp4vRHT8c9SKVe/JumeiAkIa/h6fVD4Y=
+|1|Ay20z2mLJE+N/sYkp8qSg7jT1KM=|Kj8QlW8YUmRQX7fN3odgqCyk1ik= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAYlGygCsICCRvgOUYi18Nwudv3z1vUsRmvvDKQ4Gs95
+|1|nOqlDUjaxHTVvhjN5nnU48QbZb8=|5znPMjoCYVWFqoLxgnTwNhKe5lI= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEIbwg6rJgn3sVRiS0MIxzMWI0BCOyvpoU031Wr2O3jHyEtBPfntcURQHloxD0D6gsD1Ps56a3b4/SBQgWqZY6Y=
\ No newline at end of file
--- /dev/null
+#!/bin/sh
+/usr/sbin/php-fpm8.1 -O
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+cd /docker/fluidbook-distantstorage
+docker network create fluidbook-distantstorage
+git config --global --add safe.directory /docker/fluidbook-distantstorage
+git fetch --all
+git reset --hard origin/master
+git stash
+git pull origin master
+chmod 755 /docker/fluidbook-distantstorage/app/bin/*
+chmod 755 /docker/fluidbook-distantstorage/ssh
+chmod 600 /docker/fluidbook-distantstorage/ssh/id_rsa
+DOCKER_BUILDKIT=1 docker compose build
+docker compose down
+docker compose up -d
+docker exec fluidbook-distantstorage composer update
\ No newline at end of file
--- /dev/null
+ssh root@kingkong.cubedesigners.com "/docker/fluidbook-distantstorage/update"
\ No newline at end of file
--- /dev/null
+#!/bin/bash
+cd /docker/fluidbook-distantstorage
+git config --global --add safe.directory /docker/fluidbook-distantstorage
+git fetch --all
+git reset --hard origin/master
+git stash
+git pull origin master
+chmod 755 /docker/fluidbook-distantstorage/app/bin/*
+chmod 755 /docker/fluidbook-distantstorage/ssh
+chmod 600 /docker/fluidbook-distantstorage/ssh/id_rsa
+docker exec fluidbook-distantstorage composer update
\ No newline at end of file
--- /dev/null
+ssh root@kingkong.cubedesigners.com "chmod 755 /docker/fluidbook-distantstorage/updatecode;/docker/fluidbook-distantstorage/updatecode"
\ No newline at end of file