gbbirkisson / spis Goto Github PK
View Code? Open in Web Editor NEWSimple private image server 🖼️
License: GNU General Public License v3.0
Simple private image server 🖼️
License: GNU General Public License v3.0
I'm running spis on a linux server and my media folders are located in different paths. I tried to link them into the specified media folder but spis did not follow the symbolic links. I was able to confirm that in the Code as Walkdir does not follow symbolic links by default, one has to specify it with .follow_links(true)
. Is it possible that you would add that to your next release?
Thanks for SPIS software, I am enjoying this software on my low end machine. I want to request the author of SPIS software please make pdf/scanned documents manager type of app with almost same type of functionality SPIS using. I do not want OCR type functionality/upload via web app. I just want almost SPIS type of functionality only 4-5 predefined fields to query the documents ( like user name, type of document, tag etc.).
Hi,
I wanted to try, using the easiest way.
docker pull ghcr.io/gbbirkisson/spis:latest
Error response from daemon: manifest unknown
Is the Docker image available?
Cheers
Make it easy to install SPIS when running Home Assistant OS
First of all I really like the simplicity of your gallery and see the appeal of the timeline style of presenting the pictures.
When I take pictures it is either "random" or in a context for example a special event or a trip to somewhere. For me the timeline approach is very neat for the random style picture or if I want so scroll through memories of a specific year/month/day. However I realized that if I want to see pictures from a specific event/trip/shooting it gets a bit hard to find the right date.
Have you thought about introducing "collections" that show only pictures found in a subfolder? Maybe with the option to whitelist or blacklist subfolders you want or don't want to show up. They can still show up in the timeline, the idea is just to have another way to limit the pictures you want to see.
Anyway to add an Auth page? Would be incredibly useful. Thanks.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
Cargo.toml
tracing 0.1
tracing-subscriber 0.3
dotenv 0.15
color-eyre 0.6
thiserror 1.0.57
config 0.14
clap 4
derive_more 0.99.17
tokio 1
async-cron-scheduler 2
sqlx 0.7
actix-web 4
tracing-actix-web 0.7.9
askama 0.12.1
serde 1
serde_urlencoded 0.7.1
walkdir 2
rayon 1
uuid 1
chrono 0.4.32
notify 6.1.1
image 0.25.0
kamadak-exif 0.5
which 6.0
subprocess 0.2
md-5 0.10
include_dir 0.7.3
actix 0.13.1
actix-web-actors 4.2.0
reqwest 0.12
tempfile 3
examples/docker/docker-compose.yml
docker/Dockerfile
nginx 1.27.0
.github/actions/toolchain/action.yml
jdx/mise-action v2
Swatinem/rust-cache v2
.github/workflows/ci.yml
actions/checkout v4
HatsuneMiku3939/direnv-action v1
codecov/codecov-action v4
.github/workflows/conventional-commit.yml
amannn/action-semantic-pull-request v5
marocchino/sticky-pull-request-comment v2
marocchino/sticky-pull-request-comment v2
.github/workflows/release-please.yml
google-github-actions/release-please-action v4
.github/workflows/release.yml
actions/checkout v4
ScribeMD/docker-cache 0.5.0
houseabsolute/actions-rust-cross v0
actions/upload-artifact v4
actions/checkout v4
actions/download-artifact v4
docker/setup-qemu-action v3
docker/setup-buildx-action v3
docker/login-action v3
docker/build-push-action v5
AButler/upload-release-assets v3.0
.github/workflows/stale.yml
actions/stale v9
rust-toolchain.toml
rust 1.78.0
When starting in Docker on Synology:
2024-01-12 08:21:31,014 INFO spawned: 'spis' with pid 979
2024-01-12T08:21:31.028597Z INFO spis_server: Starting spis version 0.5.7
2024-01-12T08:21:31.028909Z INFO spis_server: Media dir: "/var/lib/spis/media"
2024-01-12T08:21:31.028922Z INFO spis_server: Thumb dir: "/var/lib/spis/data/thumbnails"
2024-01-12T08:21:31.028931Z INFO spis_server: Data file: "/var/lib/spis/data/spis.db"
2024-01-12T08:21:31.028953Z INFO spis_server: Setting up DB
2024-01-12T08:21:31.031012Z INFO spis_server: Setting up media processing
2024-01-12T08:21:31.031498Z INFO spis_server: Setting up file watcher
2024-01-12T08:21:31.883209Z WARN spis_server::pipeline: file_channel was closed
Error:
0: Failed to start file watcher
1: OS file watch limit reached. about ["/var/lib/spis/media/2022/@eaDir/IMG_0168.HEIC"]
Location:
spis-server/src/main.rs:89
Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
2024-01-12 08:21:32,010 WARN exited: spis (exit status 1; not expected)
2024-01-12 08:21:33,011 INFO gave up: spis entered FATAL state, too many start retries too quickly
Thanks for making SPIS software & I am using it at my home and enjoying it very much.
This time My SPIS software heavily relies on NGINX server as it broadcast/share SPIS required data files image files within LAN network. Is it possible we can eliminate installation full flanged NGINX webserver. As I can maintained all required files with in static web address with the help of either home-assistant, Python simple Web Server or with https://filebrowser.org/ type of software. In SPIS required environment variable we can give these static web addresses then may be we can eliminate web server requirement. This approach may be beneficial by reducing resource consumption also very helpful for uploading/downloading photos to headless server. Please tell me which SPIS environment we can give to SPIS during installation & in which format those files allowed to accessible Like it only need HTTP type connection or FTP, NFS type formats also allowed. thanks
Could it be possible to add a feature where there are more than one users, each one accessing a different directory and have maybe an account or just the owner point each interface to a different port? I know that it might be forcing the project out of its original idea but I think it's a feature worth having.
This seems like a perfect project for me, except for the video part.
I have a somewhat large collection of short footages (3-15 seconds) - about 5TB of video clips much like stock videos at sites like 123rf or Adobe stock or storyblocks.
Clicking and viewing the videos one by one to find what you want gets old really quick when you have a ton of files like
Guy A getting angry.mp4
Guy A sad.mp4
Guy A reading document.mp4
And so on
It would be a godsend if this feature is implemented.
Cheers and thanks for reading at least!
I am very happy using spis on my machine with docker format. Now I want to install spis on debian machine directly. I have downloaded spis binary & install niginx & sqlite on my machine. Now I want that spis server run automatically after each time system reboot with systemctl command please guide me & help me to make service file for spis “ sudo nano /etc/systemd/system/spis.service” . I remembered I used for zigbee2mqtt this service file
`
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
Environment=NODE_ENV=production
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
RestartSec=10s
User=pi
[Install]
WantedBy=multi-user.target
`
Please modify this service file for spis software binary.
I save spis binary in this location “/mnt/mydata/spis/spis-server-x86_64-unknown-linux-gnu”
I want spis dedicated data folder “/mnt/mydata/spis_data/”
My images are at “/mnt/mydata/my_photos” want photos are read only permission for spis
Please tell me how I can pass these location values to spis & binary software control by ststemctl. thanks
The project looks perfect for my use-case, although I have a little trouble in understanding how to install and use it.
The docker example or git cloning it and deployment in a vps, it seems a little vague. Would appreciate step-by-step instructions.
Thanks!
Hi, thanks for your work! To get video support, both ffmpeg and ffprobe must be present in path!
How can I provide ffmpeg and ffprobe in Docker self-host version?
Currently SPIS will fail processing media that has no EXIF data.
Aug 01 14:19:57 lxc501 spis_active[1197]: 2023-08-01T13:19:57.907249Z ERROR spis_server::pipeline: Failed processing media: "/mnt/dietpi_userdata/plex_data/photos/IMG-20190526-WA00 88.jpg"
Aug 01 14:19:57 lxc501 spis_active[1197]: 0: Failed to read exif data
Aug 01 14:19:57 lxc501 spis_active[1197]: 1: No Exif data found in JPEG
Aug 01 14:19:57 lxc501 spis_active[1197]: Location:
Aug 01 14:19:57 lxc501 spis_active[1197]: spis-server/src/media/images/mod.rs:24
Create a fallback mechanism, using file creation date perhaps.
2023-06-22T04:39:15.366897Z INFO spis_server::media::processing: Processing done, waiting for grace period
2023-06-22T04:39:16.362099Z INFO spis_server::media: Processed 1 files in total
2023-06-22T04:39:16.363656Z INFO spis_server::media: DB counts total: 0
2023-06-22T04:39:16.363806Z INFO spis_server::media: Media processing ended after 5 seconds
2023-06-22T04:39:16.363754Z INFO spis_server: Processing schedule triggered: * * * * * *
2023-06-22T04:39:16.363843Z INFO spis_server: Processing schedule finished: * * * * * *
2023-06-22T04:39:16.363847Z INFO spis_server::media: Media processing started
2023-06-22T04:39:16.369150Z ERROR spis_server::media::processing: Failed processing media /var/lib/spis/media/screen1.jpg: failed to read exif
2023-06-22T04:39:16.369875Z INFO spis_server::media::processing: Processing done, waiting for grace period
When I ran the docker image with your gallery image, which is screen1.jpg, the error occured and nothing is showed up.
Hi,
I tried to run the docker image.
nginx cannot start since the user nginx is not existing. Do i do anything wrong here?
Any help would be appreciated.
i@raspberrypi:/srv/dev-disk-by-label-nas1/spis_working_dir $ sudo docker run -it -p 8080:8080 -v /srv/dev-disk-by-label-nas1/nasfs/Bilder:/var/lib/spis/media -v /srv/dev-disk-by-label-nas1/spis_working_dir:/var/lib/spis/data ghcr.io/gbbirkisson/spis 2024-03-03 17:35:45,941 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message. 2024-03-03 17:35:45,950 INFO supervisord started with pid 1 2024-03-03 17:35:46,960 INFO spawned: 'nginx' with pid 7 2024-03-03 17:35:46,972 INFO spawned: 'spis' with pid 8 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable /docker-entrypoint.sh: Configuration complete; ready for start up 2024-03-03T17:35:47.044662Z INFO spis_server: Starting spis version 0.6.0 2024-03-03T17:35:47.047675Z INFO spis_server: Media dir: "/var/lib/spis/media" 2024-03-03T17:35:47.048439Z INFO spis_server: Thumb dir: "/var/lib/spis/data/thumbnails" 2024-03-03T17:35:47.048679Z INFO spis_server: Data file: "/var/lib/spis/data/spis.db" 2024-03-03T17:35:47.048736Z INFO spis_server: Setting up DB 2024-03-03T17:35:47.056933Z INFO spis_server: Setting up media processing 2024/03/03 17:35:47 [emerg] 7#7: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2 2024-03-03T17:35:47.059612Z INFO spis_server: Setting up file watcher 2024-03-03 17:35:47,063 WARN exited: nginx (exit status 1; not expected) 2024-03-03T17:35:47.669139Z INFO spis_server: Setting up file walker 2024-03-03T17:35:47.669340Z INFO spis_server::pipeline: Starting db processing component 2024-03-03T17:35:47.670339Z INFO spis_server: Start listening on socket /var/run/spis.sock 2024-03-03T17:35:47.670633Z INFO spis_server::pipeline: Added processing schedule: 0 0 2 * * * 2024-03-03 17:35:48,680 INFO spawned: 'nginx' with pid 30 2024-03-03 17:35:48,683 INFO success: spis entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable /docker-entrypoint.sh: Configuration complete; ready for start up 2024/03/03 17:35:48 [emerg] 30#30: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2 2024-03-03 17:35:48,772 WARN exited: nginx (exit status 1; not expected) 2024-03-03 17:35:50,783 INFO spawned: 'nginx' with pid 36 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable /docker-entrypoint.sh: Configuration complete; ready for start up 2024/03/03 17:35:50 [emerg] 36#36: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2 2024-03-03 17:35:50,865 WARN exited: nginx (exit status 1; not expected) 2024-03-03 17:35:53,878 INFO spawned: 'nginx' with pid 42 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable /docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable /docker-entrypoint.sh: Configuration complete; ready for start up 2024/03/03 17:35:53 [emerg] 42#42: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2 2024-03-03 17:35:53,957 WARN exited: nginx (exit status 1; not expected) 2024-03-03 17:35:54,960 INFO gave up: nginx entered FATAL state, too many start retries too quickly ^C2024-03-03 17:36:12,987 WARN received SIGINT indicating exit request 2024-03-03 17:36:12,988 INFO waiting for spis to die 2024-03-03T17:36:13.296632Z WARN spis_server::pipeline: file_channel was closed 2024-03-03 17:36:14,063 INFO stopped: spis (exit status 0)
Whether the image with this exception can be displayed normally in the gallery, similar to adding a null tag
Is there a way to start a slideshow?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.