Rubén, Crystal, & Stuart--

Your responses helped me figure it out.
In particular, Stuart, you were right. My problem was having an absolute
symlink from /var/www/pixelfed/public/storage ->
/var/www/pixelfed/storage/app/public.
Making this a relative symlink (i.e., cd /var/www/pixelfed/public && ln -s
../storage/app/public storage) did the trick.

For posterity's sake, my working /etc/httpd.conf is below:

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 "/*.php" {
                fastcgi socket "/run/php-fpm.sock"
        }
 }

On Tue, May 28, 2024 at 2:13 AM Stuart Henderson <stu.li...@spacehopper.org>
wrote:

> On 2024-05-27, Am Jam <intd...@gmail.com> wrote:
> >
> > 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).
>
> Probably not bizarre. I expect they arrange things so that everything
> under /var/www/pixelfed/public can be read-only (or at least not writable
> by the user running the web server).
>
> > 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.
>
> httpd is in a chroot jail so the absolute symlink won't work.
>
> Either use a relative symlink for the above link, or set things up so
> that /var/www still works inside the chroot -
>
> mkdir /var/www/var; ln -s .. /var/www/var/www
>
>
>

Reply via email to