Hi Everyone, I am trying to install and run pixelfed (think of it as a self-hosted instagram alternative) on OpenBSD 7.5, but I am having a problem with my /etc/httpd.conf. Unfortunately, pixelfed's installation instructions only provide an nginx example. For those of you familiar with nextcloud, pixelfed is similar -- it's essentially a large php application that one can unpack under /var/www/.
I have chosen to "install" (i.e. unpack) pixelfed into /var/www/pixelfed. After chown -R www:www'ing the entire directory, everything "works" except for one critical part -- none of the images load, which, for an instagram alternative, is an issue :) What works is everything else -- I can browse around, create a user, login, adjust my settings, and post images (which ultimately don't show up). Everything works except displaying images. This expands to more than just uploaded photos -- for example, the main page's header image won't load. I believe I have pinpointed the issue, but I struggle to translate that into my /etc/httpd.conf. Most of what makes pixelfed work is located in /var/www/pixelfed/public, and hence pixelfed requires that the root directory be /var/www/pixelfed/public. So in /etc/httpd.conf I have the following lines: - root "/pixelfed/public" - directory index "index.php" However, for some bizarre reason, all the images are stored in /var/www/pixelfed/storage (note: *not* /var/www/pixelfed/public/storage). And part of the pixelfed installation process includes creating the following symlink in /var/www/pixelfed: - lrwxr-xr-x 1 root www 37B May 27 12:15 storage@ -> /var/www/pixelfed/storage/app/public/ That, unfortunately, is "outside" of the root directory specified in /etc/httpd.conf. My /etc/httpd.conf is below, and you can see that I have tried to re-set the root directory whenever someone navigates to "/storage/*", but it doesn't work. Does anyone know what I'm doing wrong? P.S. - Running the following makes all images work, but I hesitate to use this as a long-term solution: - cd /var/www/pixlfed/public - cp -a /var/www/pixelfed/storage /var/www/pixelfed/public/storage_blah - ln -s /var/www/pixelfed/public/storage_blah/app/public storage Many Thanks. /etc/httpd.conf: server "www.domain.com" { listen on * tls port 443 # acme-challenge TLS location location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } # enable HTTP Strict Transport Security hsts { preload subdomains max-age 15768000 } tls { certificate "/etc/ssl/domain.com.fullchain.pem" key "/etc/ssl/private/domain.com.key" } # set logs log { access "pixelfed-access.log" error "pixelfed-error.log" } # set max upload size to 1G (in bytes) connection max request body 1048576000 connection max requests 1000 connection request timeout 3600 connection timeout 3600 root "/pixelfed/public" directory index "index.php" # works roughly like the `try_files` line of an nginx config location not found "*" { request rewrite "/index.php?$QUERY_STRING" fastcgi socket "/run/php-fpm.sock" } location "/storage/*" { root "/pixelfed/storage/app/public" fastcgi socket "/run/php-fpm.sock" } location "/*.php" { fastcgi socket "/run/php-fpm.sock" } }