Need help with SSL and linking storage


#1

Hi there!

First of all, thank you for creating such a great project! I’m super excited to get it working.

Layout for me:
I have a CentOS 7 server with docker installed. I used the Mono-container install using the docs page for Funkwhale.

I have a mounted ssd connected to my server that is in /mnt/blockstorage. I created a folder called music in here and then ran this command:

docker run \
--name=funkwhale \
--restart=unless-stopped \
--env-file=/srv/funkwhale/.env \
-v /srv/funkwhale/data:/data \
-v /mnt/blockstorage/music:/music:ro \
-e PUID=$UID \
-e PGID=$GID \
-p 5000:80 \
-d \
funkwhale/all-in-one:0.18.2

Following that guide, I then purchased a domain and set it up.

I used letsencrypt / the certbot sudo certbot --nginx command for SSL.

— Problems —

  • The music I have in /mnt/blockstorage does not show up in the instance.

  • (once I created a library and uploaded an album) I am getting an SSL warning for mixed content. The error is for covers. I checked this question already - I’m not sure that it’s my problem…but the error is the same. I tried changing my proxy file to those values…but then I got an nginx 400 error.

  • I can’t seem to figure out how to increase a library’s GB limit. I checked in the Django admin page and couldn’t seem to find anything about it.

Thank you in advance for all the help. :slight_smile:


#2

Hi @stormkmd!

The mixed content is a known issue with the mono container. In fact, I’m going to release the 0.18.3 version today which should fix that :slight_smile:

This is done via /manage/users/users, you can increase each user quota here.

image

Did you run an import via the manage import_files command? This is needed for the music to be picked by Funkwhale. The documentation is available here: https://docs.funkwhale.audio/admin/importing-music.html

(Since you use the mono container setup, replace python manage.py by manage in the commands, and run those like that: docker exec -it funkwhale manage XXX)


#3

Version 0.18.3 was released this morning, if you want to check it out.

It should fix the mixed content warning (add NESTED_PROXY=1 to your .env then recreate your container)


#4

Hi Eliot!

Thank you so much for all of the help and for responding so quickly!
I removed my docker container and started a new one on 0.18.3 and the SSL is now working perfectly.

I also upped my library quota by doing what you said.

For my storage, I’m still having issues. I think more what I want to do is link my storage to the library, that way when I upload files through the web interface they go onto that SSD (/mnt/blockstorage/music/).

Again, thanks so much for the help and for creating this project :slight_smile:

I look forward to sending some funds your way!


#5

Uploaded files (such as audio, avatars, covers) are stored in the path defined in MEDIA_ROOT. You can simply copy the files at that path to another path on your SSD, then update the value to point to the SSD directory, and recreate a new container :slight_smile:


#6

Alright, I changed MEDIA_ROOT in my .env to the path I want. However, I am getting another error on the web interface when trying to upload.

The post above seems to be what is happening. Following the docker documentation on Funkwhale’s doc site, I have a user called funkwhale. I’ve also got a /srv/funkwhale/ dir.

Am I correct in assuming that I need to chown funkwhale:funkwhale on the /mnt/blockstorage/music dir? Or does it need to be the nginx user? I’m guessing that my permissions are wrong somewhere…

EDIT: Just to be clear, my nginx max body size is 200M. Also, I recreated my library just to see if that worked…no luck.

I’ve tried chown for nginx:nginx & funkwhale:funkwhale. I also tried chmod 777 on my mnt/blockstorage/music just to see. Doesn’t seem to be working :frowning:


#7

I wonder if you are not hitting this situation:

Can you try the suggested solution? Basically, mount /mnt/blockstorage/music like that:

docker run -v /mnt/blockstorage/music:/mnt/blockstorage/music:Z (notice the Z flag at the end). Apparently this may be related to SELinux


#8

Fantastic! It works perfectly now. Thank you so much for all your help! Went ahead and threw down a donation on the funding page. I look forward to donating more!


#9

Oops, I spoke too soon. Okay, I’ve uploaded some music and I’ve gotten to the point where I can listen to it.

The way I did this was by chown’ing the /mnt/blockstorage/music file to the funkwhale user.
sudo chown funkwhale:funkwhale /mnt/blockstorage/music

Then I had to run:
sudo chmod g+s /mnt/blockstorage/music

Now I can play music files and upload. However, for some reason the folder for album covers does not exist and does not get created when I upload a track. Any reason for this? If the funkwhale user could create the “tracks” folder…why not “albums” and “covers”?

Thank you for the help.

EDIT: Okay, I think I know what’s going on. Looking at console logs, it’s trying to access album artwork in /srv/funkwhale/media/_sized_/. etc. Obviously, that’s not where my music is stored. Still, it is odd that when I upload my music it does not create the folders for it.

EDIT2: Just to be clear, I also run my files through Picard before uploading. The cover does pop up on Picard and my local music player.


#10

I think you have to apply the same flags chmod as you did for the path mounted via /srv/funkwhale/data:/data. Can you try that and let me know if it changes anything?


#11

I tried the same commands for that as well. No dice. :frowning:

In the console logs, the request looks like this: ‘https://myDomain/media/albums/covers/2019/03/21/bbeb2aa1f-c8c7-4c49-9111-f78cfb29ef59.jpg’, along with 2 other requests for different image sizes. This comes back with a 404 because the files do not exist.

I went into my server and looked through the files. I have a media folder (because I created it) in /srv/funkwhale/data, but there is no other folders or data.

Also to give you some more info - my env is configured like so:

FUNKWHALE_HOSTNAME=myDomain.com
FUNKWHALE_PROTOCOL=https

DJANGO_SECRET_KEY=mysecretkey

NESTED_PROXY=1

MEDIA_ROOT=/mnt/blockstorage/music

MUSIC_DIRECTORY_PATH=/music
MUSIC_DIRECTORY_SERVE_PATH=/mnt/blockstorage/music

REVERSE_PROXY_TYPE=nginx
NGINX_MAX_BODY_SIZE=200M

I have tried playing around with the path values but I am unsure on what exactly they should be. I think I have them correct. Unable to find that /music folder though for MUSIC_DIRECTORY_PATH.


#12

Allright, I see what’s going on.

You are using the same path for MEDIA_ROOT (uploaded files) and
MUSIC_DIRECTORY_SERVE_PATH. Since your music directory is mounted as read-only, Funkwhale cannot write media files.

I’ll probably update MEDIA_ROOT to point to /srv/funkwhale/data/media, this should fix the issue :slight_smile:


#13

I finally got it!

  • I did rm -rf /mnt/blockstorage/music and rm -rf /srv/funkwhale/data.
  • I then created a new docker instance with the .env file above, BUT I changed MUSIC_DIRECTORY_PATH to /mnt/blockstorage/music. Everything else I kept the same.
  • Then I created a new superuser, signed in and created a new library.
  • Uploaded a track. Covers / music is there in /mnt/blockstorage/music along with everything else.

It all works now. Thank you so much for all of your help! Hope this helps someone else out in the future :slight_smile:


#14

great, thank you for sharing the solution!


Particular song stops before the last few seconds
closed #15

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.