Where does it fail?
I struggled a lot with ports.
I still didn't get how ports are configured in the container, but a user tried to help me and now I get an error 500
Here's my compose (path is OMV path)
version: "3.3"
services:
shotshare:
ports:
- 2000:2000
environment:
- HOST=:2000
- ALLOW_REGISTRATION=false
volumes:
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/shotshare_data:/app/storage
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/database.sqlite:/app/database/database.sqlite
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/.env:/app/.env
restart: unless-stopped
container_name: shotshare
image: mdshack/shotshare:latest
networks: {}
ERR | ts=1705936180.7673454 logger=http.log.access msg=handled request request={"remote_ip":"192.168.1.106","remote_port":"57659","client_ip":"192.168.1.106","proto":"HTTP/1.1","method":"GET","host":"192.168.1.104:2000","uri":"/","headers":{"Dnt":["1"],"Sec-Gpc":["1"],"Connection":["keep-alive"],"Upgrade-Insecure-Requests":["1"],"User-Agent":["Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0"],"Accept":["text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate"],"Cookie":[]}} bytes_read=0 user_id= duration=0.168065318 size=651 status=500 resp_headers={"Status":["500 Internal Server Error"],"X-Powered-By":["PHP/8.3.1"],"Cache-Control":["no-cache, private"],"Content-Encoding":["gzip"],"Vary":["Accept-Encoding"],"Server":["Caddy"],"Date":["Mon, 22 Jan 2024 15:09:40 GMT"],"Content-Type":["text/html; charset=UTF-8"]}
I can't wrap my head around this
This appears to be the exact same problem as https://github.com/mdshack/shotshare/issues/31
For testing I just spun up a VM with Docker, I tried the same compose file as you. I found I had to use the volume instead of a bind mount for /app/storage
.
This compose file should work.
version: "3.3"
services:
shotshare:
ports:
- 2000:80
environment:
- HOST=:80
- ALLOW_REGISTRATION=false
volumes:
- shotshare_data:/app/storage
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/database.sqlite:/app/database/database.sqlite
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/.env:/app/.env
restart: unless-stopped
container_name: shotshare
image: mdshack/shotshare:latest
volumes:
shotshare_data:
networks: {}
Oh wow, thanks for trying this. It is working indeed.
I am an absolute begginer so let me ask. Where is shotshare_data
on my machine ? Is it in docker volumes ( like /var/lib/docker/volumes/
) ?
Is there a way I can store data in /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/
?
It will be stored in /var/lib/docker/volumes
, you can find the exact location by inspecting the volume. Use docker volume ls
to list the volumes, and do docker volume inspect <volume_name>
replacing <volume_name> with the one from the list. Look for "Mountpoint", that is the exact location. You could try copying that to bind mount location, though I can't be sure if it will continue to work.
I just did another test.
You should be able to create the directories manually. I cheated by simply cloning the repo and copying them to the bind mount location like so. You can use the bind mount method like you wanted.
git clone https://github.com/mdshack/shotshare
cp -r shotshare/storage/* /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/shotshare_data/
chown 82:82 -R /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/shotshare_data
Ugh permission issues...
I have no idea how the shotshare image works, but an easier method is to specify the puid/pgid in the docker-compose:
environment:
- PUID=82
- PGID=82
If the docker image supports it, the --user
flag is also helpful :).
I know those works with volume mounts, no idea about bind mounts.
Oh that's great.
So do I need to keep this ?
volumes:
shotshare_data:
No, since you are using the bind mount, you do not need to use the volume.
Thank you very much !
You're welcome! Also thanks for asking this question, I hadn't seen ShotShare before, it looks useful.
To give more information:
I'm a portainer user and wanted to try shotshare as is looks exactly like what I need :)
I followed these steps: sudo mkdir Shotshare and cd into this directory sudo touch .env database.sqlite sudo chown 82:82 .env database.sqlite
and then tried this docker-compose:
version: "3.3"
services:
shotshare:
ports:
- 2000:2000
environment:
- HOST=:2000
- ALLOW_REGISTRATION=false
volumes:
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/shotshare_data:/app/storage
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/database.sqlite:/app/database/database.sqlite
- /srv/dev-disk-by-uuid-7fe66601-5ca0-4c09-bc13-a015025fe53a/Files/Shotshare/.env:/app/.env
restart: unless-stopped
container_name: shotshare
image: mdshack/shotshare:latest
networks: {}
Selfhosted
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
-
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
-
No spam posting.
-
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
-
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
-
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
-
No trolling.
Resources:
- selfh.st Newsletter and index of selfhosted software and apps
- awesome-selfhosted software
- awesome-sysadmin resources
- Self-Hosted Podcast from Jupiter Broadcasting
Any issues on the community? Report it using the report flag.
Questions? DM the mods!