Giter Club home page Giter Club logo

docs's Introduction

Build Status Latest Stable Version License

Introduction

A free and ethical photo sharing platform, powered by ActivityPub federation.

Official Documentation

Documentation for Pixelfed can be found on the Pixelfed documentation website.

Run on YunoHost

Install on YunoHost

Pixelfed app for YunoHost. See the package source code

License

Pixelfed is open-sourced software licensed under the AGPL license.

Communication

The ways you can communicate on the project are below. Before interacting, please read through the Code Of Conduct.

Pixelfed Sponsors

We would like to extend our thanks to the following sponsors for funding Pixelfed development. If you are interested in becoming a sponsor, please visit the Pixelfed Patreon Page

docs's People

Contributors

akshatdogra avatar angristan avatar ashleyhull-versent avatar asonix avatar blueraccoontech avatar ctr49 avatar dansup avatar glukose avatar harmtemolder avatar joachimesque avatar joshkitt avatar kasramp avatar krinkle avatar kryskool avatar lfuelling avatar lisbonjoker avatar marmo avatar pablodekota avatar rhonda avatar stelzch avatar strubbl avatar strugee avatar swentel avatar thisislawatts avatar trwnh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docs's Issues

official Docker image

Currently there are various Docker images with different versions (and trust).
It would be nice to have an official and documented Docker image based on an automated, stable build.

PS: thank you for your work!

API does not work without auth?

I've tried to get status like in mastodon, i.e.
curl https://pixelfed.social/api/v1/statuses/366932853145454919
bot got 302 to login page.

Why? The status is public, why API does not return it?

How to use the diagnosis code?

I've encountered something went wrong several times.
Copy diagnosis details, and I got a base 64 encoded string. Upon decoding the base64, I got a JSON containing iv,value and mac, Can you add instructions on how toake use of them?

remove command from install-instructions

In the install-Instructions on https://docs.pixelfed.org/running-pixelfed/installation.html#setting-up-services is the command
pvp artisan horizon:assets which fails with following message:

( 0 ✓) (SCREEN) pixelfed@srvimages (16:25)
/usr/share/webapps/pixelfed:(dev -> origin/dev) $ php artisan horizon:assets

                                            
  Command "horizon:assets" is not defined.  
                                            
  Did you mean one of these?                
      horizon                               
      horizon:clear                         
      horizon:continue                      
      horizon:continue-supervisor           
      horizon:forget                        
      horizon:install                       
      horizon:list                          
      horizon:pause                         
      horizon:pause-supervisor              
      horizon:publish                       
      horizon:purge                         
      horizon:snapshot                      
      horizon:status                        
      horizon:supervisors                   
      horizon:terminate                     
                                            

Broken links in https://docs.pixelfed.org/ probably due to config.toml issues

Description of issue:

I was browsing the documentation on https://docs.pixelfed.org/ and found broken links. When I looked at the markdown versions in this repo the links work.

Example:

This page: https://docs.pixelfed.org/technical-documentation/config/ has a link to this page:
https://docs.pixelfed.org/technical-documentation/running-pixelfed/installation.md#configure-environment-variables

For a user-facing guide to which environment variables you might want to set, check out the <a href=../running-pixelfed/installation.md#configure-environment-variables>installation guide</a> instead.

In this repo I do not get a 404 viewing that content:

https://github.com/pixelfed/docs/blob/main/content/en/technical-documentation/config.md

For a user-facing guide to which environment variables you might want to set, check out the [installation guide](https://github.com/pixelfed/docs/blob/main/content/en/running-pixelfed/installation.md#configure-environment-variables) instead. {{}}

Arch Linux: php-fpm.service prevents installation into /home/pixelfed

After following the instructions for installation on Arch (https://docs.pixelfed.org/installing-pixelfed/guides/arch.html) when loading the pixelfed home page in the browser (Firefox / Chromium) I get the File not found. message.

I have set up the nginx.conf as per the docs, only changing my server_name to what I type in the browser.
I have checked the rest of the configuration, it looks good. I have checked the content of $document_root$fastcgi_script_name and it returns precisely the path where the public folder is.

Any idea what could have gone wrong or how I can find out?

OAuth not properly document

If you want to run pixeldroid with your instance, you need to configure passport using

php artisan passport:keys

and

php artisan passport:install

These options are missing on the official documentation. Or is the sequence of passport commands wrong?

Regards Carsten

Where are the error logs?

I've cobbled together an Ubuntu 22.04 install of Pixelfed however I'm getting a "something is wrong" message when I click on a lot of things in Admin.

Where does Pixelfed dump out its error logs as I'm 99.9% sure its a permissions issue.

Make redis really optional

Is it possible to run pixelfed without redis at all? How can i configure that?

According to documentation Redis config https://docs.pixelfed.org/master/configuration.html#redis-configuration is optional. If i have no redis and leave in the default config values for REDIS_* or comment them i get an error.

I have no redis running, so this is why get the following error message with the default values:

[2019-03-26 22:58:26] production.ERROR: Connection refused [tcp://127.0.0.1:6379] {"exception":"[object] (Predis\\Connection\\ConnectionException(code: 111): Connection refused [tcp://127.0.0.1:6379] at /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php:155)
[stacktrace]
#0 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(128): Predis\\Connection\\AbstractConnection->onConnectionError('Connection refu...', 111)                                                                                              
#1 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(178): Predis\\Connection\\StreamConnection->createStreamSocket(Object(Predis\\Connection\\Parameters), 'tcp://127.0.0.1...', 4)                                                         
#2 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(100): Predis\\Connection\\StreamConnection->tcpStreamInitializer(Object(Predis\\Connection\\Parameters))                                                                                
#3 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php(81): Predis\\Connection\\StreamConnection->createResource()                                                                                                                           
#4 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(258): Predis\\Connection\\AbstractConnection->connect()
#5 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php(180): Predis\\Connection\\StreamConnection->connect()
#6 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(288): Predis\\Connection\\AbstractConnection->getResource()                                                                                                                             
\7 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(394): Predis\\Connection\\StreamConnection->write('*2\
\3\
\ET\
$6...')
#8 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php(110): Predis\\Connection\\StreamConnection->writeRequest(Object(Predis\\Command\\StringGet))                                                                                          
#9 /var/www/vendor/predis/predis/src/Client.php(331): Predis\\Connection\\AbstractConnection->executeCommand(Object(Predis\\Command\\StringGet))                                                                                                             
#10 /var/www/vendor/predis/predis/src/Client.php(314): Predis\\Client->executeCommand(Object(Predis\\Command\\StringGet))
#11 /var/www/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(114): Predis\\Client->__call('get', Array)                                                                                                                             
#12 /var/www/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(214): Illuminate\\Redis\\Connections\\Connection->command('get', Array)                                                                                                
#13 /var/www/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php(54): Illuminate\\Redis\\Connections\\Connection->__call('get', Array)                                                                                                              
#14 /var/www/vendor/laravel/framework/src/Illuminate/Cache/Repository.php(97): Illuminate\\Cache\\RedisStore->get('iVM9dOG5CWaRHn8...')                                                                                                                      
#15 /var/www/vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php(58): Illuminate\\Cache\\Repository->get('iVM9dOG5CWaRHn8...', '')                                                                                                  
#16 /var/www/vendor/laravel/framework/src/Illuminate/Session/Store.php(97): Illuminate\\Session\\CacheBasedSessionHandler->read('iVM9dOG5CWaRHn8...')                                                                                                        
#17 /var/www/vendor/laravel/framework/src/Illuminate/Session/Store.php(87): Illuminate\\Session\\Store->readFromHandler()
#18 /var/www/vendor/laravel/framework/src/Illuminate/Session/Store.php(71): Illuminate\\Session\\Store->loadSession()
#19 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(81): Illuminate\\Session\\Store->start()                                                                                                                            
#20 /var/www/vendor/laravel/framework/src/Illuminate/Support/helpers.php(1123): Illuminate\\Session\\Middleware\\StartSession->Illuminate\\Session\\Middleware\\{closure}(Object(Illuminate\\Session\\Store))                                                
#21 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(82): tap(Object(Illuminate\\Session\\Store), Object(Closure))                                                                                                       
#22 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(51): Illuminate\\Session\\Middleware\\StartSession->startSession(Object(Illuminate\\Http\\Request))                                                                 
#23 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                                   
#24 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#25 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                  
#26 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                      
#27 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#28 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                              
#29 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                                  
#30 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#31 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#32 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(682): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))                                                                                                                          
#33 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(657): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))                                                        
#34 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(623): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))                                                                   
#35 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(612): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))                                                                                                
#36 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))                                                                                               
#37 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))                                                              
#38 /var/www/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                                                               
#39 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                                                  
#40 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#41 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                  
#42 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                     
#43 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#44 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                  
#45 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                     
#46 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#47 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                   
#48 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                                      
#49 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#50 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                            
#51 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))                                               
#52 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#53 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))                                                                            
#54 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))                                                                                                                  
#55 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))                                                                      
#56 /var/www/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#57 {main}
"}

When i comment the redis config variables, i get the error:

[2019-03-26 23:03:00] production.ERROR: php_network_getaddresses: getaddrinfo failed: Name or service not known [tcp://redis:6379] {"exception":"[object] (Predis\\Connection\\ConnectionException(code: 0): php_network_getaddresses: getaddrinfo failed: Name or service not known [tcp://redis:6379] at /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php:155)
[stacktrace]
#0 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(128): Predis\\Connection\\AbstractConnection->onConnectionError('php_network_get...', 0)
#1 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(178): Predis\\Connection\\StreamConnection->createStreamSocket(Object(Predis\\Connection\\Parameters), 'tcp://redis:637...', 4)
#2 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(100): Predis\\Connection\\StreamConnection->tcpStreamInitializer(Object(Predis\\Connection\\Parameters))
#3 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php(81): Predis\\Connection\\StreamConnection->createResource()
#4 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(258): Predis\\Connection\\AbstractConnection->connect()
#5 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php(180): Predis\\Connection\\StreamConnection->connect()
#6 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(288): Predis\\Connection\\AbstractConnection->getResource()
\7 /var/www/vendor/predis/predis/src/Connection/StreamConnection.php(394): Predis\\Connection\\StreamConnection->write('*2\
\3\
\ET\
$6...')
#8 /var/www/vendor/predis/predis/src/Connection/AbstractConnection.php(110): Predis\\Connection\\StreamConnection->writeRequest(Object(Predis\\Command\\StringGet))
#9 /var/www/vendor/predis/predis/src/Client.php(331): Predis\\Connection\\AbstractConnection->executeCommand(Object(Predis\\Command\\StringGet))
#10 /var/www/vendor/predis/predis/src/Client.php(314): Predis\\Client->executeCommand(Object(Predis\\Command\\StringGet))
#11 /var/www/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(114): Predis\\Client->__call('get', Array)
#12 /var/www/vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php(214): Illuminate\\Redis\\Connections\\Connection->command('get', Array)
#13 /var/www/vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php(54): Illuminate\\Redis\\Connections\\Connection->__call('get', Array)
#14 /var/www/vendor/laravel/framework/src/Illuminate/Cache/Repository.php(97): Illuminate\\Cache\\RedisStore->get('geuPNZvysOyBIl0...')
#15 /var/www/vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php(58): Illuminate\\Cache\\Repository->get('geuPNZvysOyBIl0...', '')
#16 /var/www/vendor/laravel/framework/src/Illuminate/Session/Store.php(97): Illuminate\\Session\\CacheBasedSessionHandler->read('geuPNZvysOyBIl0...')
#17 /var/www/vendor/laravel/framework/src/Illuminate/Session/Store.php(87): Illuminate\\Session\\Store->readFromHandler()
#18 /var/www/vendor/laravel/framework/src/Illuminate/Session/Store.php(71): Illuminate\\Session\\Store->loadSession()
#19 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(81): Illuminate\\Session\\Store->start()
#20 /var/www/vendor/laravel/framework/src/Illuminate/Support/helpers.php(1123): Illuminate\\Session\\Middleware\\StartSession->Illuminate\\Session\\Middleware\\{closure}(Object(Illuminate\\Session\\Store))
#21 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(82): tap(Object(Illuminate\\Session\\Store), Object(Closure))
#22 /var/www/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(51): Illuminate\\Session\\Middleware\\StartSession->startSession(Object(Illuminate\\Http\\Request))
#23 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#26 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /var/www/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#29 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#32 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(682): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#33 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(657): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#34 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(623): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#35 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(612): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#36 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#37 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#38 /var/www/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#39 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#42 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#43 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#44 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#48 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#50 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#51 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#54 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#55 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#56 /var/www/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#57 {main}
"} 

Postgresql socket configuration is undocumented, confusing

Current install docs say:

  • Set DB_HOST to the IP of the machine
  • Set DB_PORT to the port on which your database server is exposed

Alternatively, if you are using a Unix socket:

  • Set DB_SOCKET to the path of the socket, e.g. /run/mysqld/mysqld.sock

But this doesn't work for Postgresql. The only way I could make it work was:

DB_CONNECTION=pgsql
# DB_SOCKET=/run/postgresql/
DB_HOST=/run/postgresql/
DB_PASSWORD=null
DB_PORT=5432 # ?

DB_DATABASE=pixelfed
DB_USERNAME=pixelfed

feedback on install guide

https://cathode.church/@meena/108064445721565119

there's too many components and i don't understand what they do

  • explain what each component does

i would never give an application server write access to the entire application its serving. i'd give it granular access to a few directories it needs.

  • remove the step where we set permissions to 775/664 -- or at least make it only applicable to the storage/ and bootstrap/ directories

there's about a dozen php artisan calls that need to be done

  • add artisan install as an alternatively supported installation flow

Ciphers problem

Hello,

I followed the exemple given in the documentation regarding Nginx and now I'm facing this error: The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.

Can you help?

Thanks in advance,

HTTPS proxy in front of HTTP server

Hello,

The generation of previews when uploading an image fails, even if the jobs seems to be successfully triggered:

Apr  2 12:43:56 pixelfed01 php[23918]: [2019-04-02 12:43:55][64] Processing: App\Jobs\ImageOptimizePipeline\ImageOptimize
Apr  2 12:43:56 pixelfed01 php[23918]: [2019-04-02 12:43:55][64] Processed:  App\Jobs\ImageOptimizePipeline\ImageOptimize
Apr  2 12:43:56 pixelfed01 php[23918]: [2019-04-02 12:43:55][65] Processing: App\Jobs\ImageOptimizePipeline\ImageResize
Apr  2 12:43:57 pixelfed01 php[23918]: [2019-04-02 12:43:56][65] Processed:  App\Jobs\ImageOptimizePipeline\ImageResize
Apr  2 12:43:57 pixelfed01 php[23918]: [2019-04-02 12:43:56][66] Processing: App\Jobs\ImageOptimizePipeline\ImageThumbnail
Apr  2 12:43:57 pixelfed01 php[23918]: [2019-04-02 12:43:56][66] Processed:  App\Jobs\ImageOptimizePipeline\ImageThumbnail
Apr  2 12:43:57 pixelfed01 php[23918]: [2019-04-02 12:43:56][67] Processing: App\Jobs\ImageOptimizePipeline\ImageUpdate
Apr  2 12:43:58 pixelfed01 php[23918]: [2019-04-02 12:43:57][67] Processed:  App\Jobs\ImageOptimizePipeline\ImageUpdate

Screenshot 2019-04-02 at 14 09 05

How can we fix this?

add tip to set umask when not using http:http as owner

add umask 002 to ~/.bash_profile of your app-user, or else a git pull will reset permissions on changed files to 755/644 instead of 775/664. this isn't needed if you're using the same user/group as your web process, but will cause issues with group-based perm setups.

Missing UNIX domain socket path

Testing sock connection

Command: php artisan horizon:status and then getting this error

Missing UNIX domain socket path.

  at vendor/predis/predis/src/Connection/StreamConnection.php:193
    189▕      */
    190▕     protected function unixStreamInitializer(ParametersInterface $parameters)
    191▕     {
    192▕         if (!isset($parameters->path)) {
  ➜ 193▕             throw new \InvalidArgumentException('Missing UNIX domain socket path.');
    194▕         }
    195▕ 
    196▕         $flags = STREAM_CLIENT_CONNECT;
    197▕ 

      +28 vendor frames 
  29  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()

Here's my settings:

REDIS_SCHEME=unix
REDIS_HOST=/var/run/redis/redis.sock
REDIS_PASSWORD=null
REDIS_PORT=null

The solution is to add ```trustedproxy="*"``` to .env, confirmed that it fixed

The solution is to add trustedproxy="*" to .env, confirmed that it fixed the issue with @Shleeble's instance

Originally posted by @dansup in https://github.com/pixelfed/pixelfed/issues/1148#issuecomment-485319303

I have the same problem, already mentioned in issue pixelfed/pixelfed#1148 with release v0.10.0.
I checked all the settings and tried to add this setting in.env, restarted all the services, i still have the 401 error on the preview upload:
[18/Aug/2019:16:26:14 +0200] "GET /i/media/preview/63791766192656384/41?expires=1566141973&signature=e335e36e966a8c717ab9e1c3e234f2eaa378d4e267ffb5ca28428964e1d79c38 HTTP/1.1" 401 1570 "https://myhost.local/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"

Do you have any idea?
Thanks.

Is there any way to disable photo compression?

I want to deploy this project on my server and publish photos there without any compression.
I tried to find information about this in the documentation, but I didn't find anything. Thank you in advance for any help.

expand on gd vs imagemagick requirement

by default, config/image.php is set to 'gd', so you need to enable the gd extension.

or you need to install imagemagick and php-imagick, then enable imagick extension.

Issues installing on FreeBSD 13.2

I see a few open issues about incomplete installation instructions, but I'm not sure how different things are on FreeBSD. Since I'm a weirdo not running Linux, here's what I had to resolve on FreeBSD 13.2 with PHP 8.1:

PHP dependencies

Even though I had installed every dependency listed in the prerequisites document, composer wouldn't run successfully until I also installed the following packages (assume all package names are prefaced with the specific PHP version, in this case 'php81-')

pcntl
posix
simplexml
xmlwriter
sodium

After installation I also ended up needing to install the php81-pecl-imagick-im7 package but I don't have a note as to why.

Laravel

  1. When I was cleaning up dependencies I ran php artisan test and had several failures that were fixed when I ran composer require osiemsiedem/laravel-autolink . Is that a requirement overall, or just a requirement for development?

  2. Laravel also ignores umask when writing files and creating directories, and the settings in config/filesystems.php turned out not to work for me with Pixelfed running under its own account:

        'local' => [
            'driver' => 'local',
            'root'   => storage_path('app'),
            'permissions' => [
                'file' => [
                    'public' => 0644,
                    'private' => 0600,
                ],
                'dir' => [
                    'public' => 0755,
                    'private' => 0700,
                ],
            ],
        ],

This may be a bug, but even though images were being written with public permissions (0644), they were being placed in folders with private permissions (0700), which meant that my web server couldn't read them. This problem won't show up if Pixelfed is running under the same account as the HTTP server, but it was a problem for me. As a workaround I had to set the private permissions on directories to 0750.

Other

Even after resolving the autolink issue, there's still one test failure:

  at tests/Feature/LoginTest.php:14
     10▕     public function view_login_page()
     11▕     {
     12▕         $response = $this->get('login');
     13▕ 
  ➜  14▕         $response->assertSee('Forgot Password');
     15▕     }
     16▕ }
     17▕ 

The HTML in the assertion failure is a "Sorry, this page isn't available" error, and I don't know enough to know whether that test is outdated or depends on tools that aren't present in a prod environment. So that could either be documented or the test suite could be rewritten to skip it if a developer-only dependency is missing.

And one last annoying thing: I initially configured my storage as local-only just to get it up and running, but once I got my cloud storage (Digital Ocean Spaces) configured, I wanted to use the migrate2cloud function to move the first few images I'd uploaded in order to have them all in one place. Turns out that migrate2cloud ignores images less than two days ago (->where('created_at', '<', now()->subDays(2))) and that seems like a thing that also could maybe be documented somewhere.

Command not found

I'm most likely just stupid and not following the manual correctly, but in the process of installing, you say to run the following commands:
composer install
update .env file
I got the first command by doing apt install composer on a Debian server, but the "update" command I can't find and don't know from my 15 years of Linux knowledge. Would it be possible, to update the manual and just add the commands you need to install the prerequisites on some common distros?

explain federation support

The project is still young, but we are getting close to a polished v1.0 release with federation support!

What does federation support mean here? "federation support" means being able to connect to mastodon instances?

The document should explain this in the beginning as it is an important reason people coming to pixelfed.

Give admins an option to offer a logged-out experience

Pixelfed's #1 opportunity to drive engagement and adoption is the sharing of beautiful photos to anyone who hits a pixelfed instance. But today, every instance that one hits (without a username) gives a generic login screen.

Admins should have an option to show the local grid of photos to an unauthenticated home page for the instance. Let people browse, even if they're from a different instance, to find others to follow an interact with. Offer sign-up in the header, but give at least some peek as to the marvelous content that is flowing into the instance.

This would make Pixelfed more than just an assortment of identical login pages. Users could be allowed to opt their content in/out of that experience.

End to end Ubuntu 20.04 installation guide

image
image

Upgrade Ubuntu 20.04 LTS

apt update
apt upgrade -y
reboot now

Redis - Install

apt -y install redis-server
systemctl enable redis-server

MariaDB - Install

apt -y install mariadb-server
systemctl enable mariadb
mysql_secure_installation
mysql -u root -p

Run the SQL query to create the pixelfed DB

create database pixelfed;
grant all privileges on pixelfed.* to 'pixelfed'@'localhost' identified by 'secretpasswordhere';
flush privileges;
exit;

Setup dependent packets

apt -y install ffmpeg 
apt -y install jpegoptim optipng pngquant gifsicle 
apt -y install unzip zip

PHP - Install

apt -y install php7.4-fpm php7.4-cli
### Install additional PHP modules not installed by default
apt -y install php7.4-bcmath php7.4-curl php7.4-gd php7.4-intl php7.4-mbstring php7.4-redis php7.4-xml php7.4-zip php7.4-mysql

PHP - Setup

nano /etc/php/7.4/fpm/php.ini

Edit these lines

    post_max_size (default 8M, set this around or slightly greater than your desired post size limit)
    file_uploads (default On, which it needs to be)
    upload_max_filesize (default 2M, set this <= post_max_size)
    max_file_uploads (default 20, but make sure it is >= your desired attachment limit)
    max_execution_time (default 30, consider raising this to 600 or more so that longer tasks arent interrupted)

PHP-fpm - Setup

cd /etc/php/php-fpm.d/

edit these lines

    [pixelfed]
    user = pixelfed
    group = pixelfed
    listen = /run/php/php7.4-fpm-pixelfed.sock

Composer

curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

AS PIXELFED USER

adduser pixelfed
su - pixelfed
git clone -b dev https://github.com/pixelfed/pixelfed.git pixelfed

cd pixelfed
composer install --no-ansi --no-interaction --optimize-autoloader
cp .env.example .env

Complete .env

nano .env

edit these lines

    APP_NAME="Pixelfed Australia"
    APP_DEBUG=false

    APP_URL="https://pixelfed.au"
    APP_DOMAIN="pixelfed.au"
    ADMIN_DOMAIN="pixelfed.au"
    SESSION_DOMAIN="pixelfed.au"

PHP Artisan tasks

#One time only, you need to generate the secret APP_KEY:
php artisan key:generate

#One time only, the storage/ directory must be linked to the application:
php artisan storage:link

#Database migrations must be run:
php artisan migrate --force

#If you want to enable support for location data:
php artisan import:cities

#If you enabled ActivityPub federation:
php artisan instance:actor

#If you enabled OAuth:
php artisan passport:keys

#Routes should be cached whenever the source code changes or whenever you change routes:
php artisan route:cache
php artisan view:cache

#Every time you edit your .env file, you must run this command to have the changes take effect:
php artisan config:cache

### Laravel Horizon - Job queueing
php artisan horizon:install
php artisan horizon:publish

AS ROOT USER

tee /etc/systemd/system/pixelfedhorizon.service <<EOF
[Unit]
Description=Pixelfed task queueing via Laravel Horizon
After=network.target
Requires=mariadb
Requires=php7.4-fpm
Requires=redis
Requires=nginx

[Service]
Type=simple
ExecStart=/usr/bin/php artisan horizon --environment=production
ExecStop=/usr/bin/php artisan horizon:terminate --wait
User=pixelfed
WorkingDirectory=/home/pixelfed/pixelfed/
Restart=on-failure

KillSignal=SIGCONT
TimeoutStopSec=3600

[Install]
WantedBy=multi-user.target

EOF

systemctl daemon-reload
systemctl enable pixelfedhorizon
systemctl status pixelfedhorizon

Crontab for schedule

crontab -e

add this line

* * * * * /usr/bin/php /home/pixelfed/pixelfed/artisan schedule:run >> /dev/null 2>&1

Nginx - Install

apt -y install nginx
systemctl enable nginx

Certbot

apt install certbot python3-certbot-nginx
certbot --nginx -d pixelfed.au -d www.pixelfed.au

Nginx

cp /home/pixelfed/pixelfed/contrib/nginx.conf /etc/nginx/sites-available/pixelfed.conf
ln -s /etc/nginx/sites-available/pixelfed.conf /etc/nginx/sites-enabled/
nano /etc/nginx/sites-available/pixelfed.conf
systemctl reload nginx

Command "horizon:assets" is not defined.

Hi,

The doc says to do php artisan horizon:assets but the command fails:

                                            
  Command "horizon:assets" is not defined.  
                                            
  Did you mean one of these?                
      horizon                               
      horizon:clear                         
      horizon:continue                      
      horizon:continue-supervisor           
      horizon:forget                        
      horizon:install                       
      horizon:list                          
      horizon:pause                         
      horizon:pause-supervisor              
      horizon:publish                       
      horizon:purge                         
      horizon:snapshot                      
      horizon:status                        
      horizon:supervisors                   
      horizon:terminate                     
                                            

And php artisan horizon:install that has to be run just before has the line Publishing Horizon Assets... in its output. So I don’t know if the assets command is needed or not.

Discover page not visible when logged out

Hello,

If i want to access to a PF instance, i have to create an account, otherwise it is inaccessible. I'd like to access to an instance in a "disconnected" mode via a function that the admin can enable or disable.

File & Folder Permissions - Need Help

My instance is up and running, but every uploaded image won't display. When I look at the storage folder structure, none of the created folders have the executable flag set for folders. I have to manually chmod +x the folders and refresh the page to see the uploaded images. I have tried everything I can think of and just cannot figure this one out.

Here is the error in the log:

2023/01/04 19:10:54 [crit] 183992#183992: *937 stat() "/var/www/pixelfed/public/storage/m/_v2/515538758400753665/3079cad20-917577/vtN2psVBRtH2/YSZdO0Fjpiq7VN3UTwPwCHdDTtmZytMo4yMh80BM.jpg" failed (13: Permission denied), client: 23.111.147.234, server: pixfrom.unpopular.cloud, request: "GET /storage/m/_v2/515538758400753665/3079cad20-917577/vtN2psVBRtH2/YSZdO0Fjpiq7VN3UTwPwCHdDTtmZytMo4yMh80BM.jpg HTTP/2.0", host: "pixfrom.unpopular.cloud", referrer: "https://pixfrom.unpopular.cloud/i/web/post/516329955341889545"

Here is my php-fpm configuration:

[pixelfed]
user = pixelfed
group = pixelfed
listen = /run/php/pixelfed.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Here is what the /run folder looks like:

root@pixfrom:~# ll /run/php/
total 4
drwxr-xr-x  2 www-data www-data   80 Jan  4 19:09 ./
drwxr-xr-x 33 root     root     1040 Jan  4 14:20 ../
-rw-r--r--  1 root     root        6 Jan  4 19:09 php8.2-fpm.pid
srw-rw----  1 www-data www-data    0 Jan  4 19:09 pixelfed.sock=

I did all of the user and group modifications. Can someone help me troubleshoot this? I got a feeling it is something easy and dumb and I just overlooked it.

Regards,
J

add migration instructions

steps to move from one machine to another:

  • setup/configure dependencies on new machine
  • copy repo files over to new machine
  • export database and import it on new machine (php artisan backup:run --only-db) (or mysqldump for mariadb/mysql)
  • change dns to point to new machine

Documentation explaining use of Collections

I see from other issues logged that Collections is actually a collection of posts, not photos. That is fine but I think it needs to be explained in the help documention how it's intended to be used?

For example, I created two public collections for my profile at https://pixelfed.social/danie10 but don't see them mentioned anywhere on the profile view (I even tried viewing my profile from a logged out browser but it only shows counts for posts, followers, and following).

I also don't see any option with a post I've already created, to add that post to an existing collection (see attachment). I would expect a collection can grow over time.

pixelfed

Development guide

Hi, thanks for your work in Pixelfed :)

I couldn't find any docs around how to setup pixelfed for development, I see you mentioned homestead in pixelfed/pixelfed#257, but I'm unsure if I should just setup homestead and it will work out of the box or if there's something extra I'd need to do.
Could you point me in the right direction?

Suggested Redis socket configuration not working

Current install docs say:

If you are using a Unix socket for Redis, then:

  • Set REDIS_HOST to the path of the socket, e.g. /run/redis/redis.sock
  • Set REDIS_PORT to null

What worked for me was rather:

REDIS_SCHEME=unix
REDIS_PATH=/run/redis/redis-server.sock
# REDIS_HOST=
# REDIS_PORT=
# REDIS_PASSWORD=

This with source pulled from pixelfed/pixelfed@eb84b65 , redis 5:6.0.15-1 debian bullseye.

Documentation should state that an old version of PHP is required. Also, required php modules section is missing pcntl

Problem 1
- laravel/horizon is locked to version v5.7.17 and an update of this package was not requested.
- laravel/horizon v5.7.17 requires ext-pcntl * -> it is missing from your system. Install or enable PHP's pcntl extension.
Problem 2
- fzaninotto/faker is locked to version v1.9.2 and an update of this package was not requested.
- fzaninotto/faker v1.9.2 requires php ^5.3.3 || ^7.0 -> your php version (8.1.1) does not satisfy that requirement.

faker is unsupported and abandoned according to the author. probably shouldn't use it in modern software?

deleting all the faker stuff out of composer.lock allows the composer update to run (after install pcntl PHP module), however there is another warning about using abandoned software that should be fixed.

"Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead."

Document REDIS_PATH

Hello,

I just try to install a new pixelfed today but failed when I run php artisan migrate --force

Database version

root@pixelfed ~ # mysql --version
mysql  Ver 15.1 Distrib 10.6.11-MariaDB, for debian-linux-gnu (x86_64) using readline EditLine wrapper

Firstly, I try to use 127.0.0.1 as the DB_HOST but failed:


   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [1045] Access denied for user 'pixelfed_user2'@'127.0.0.1' (using password: YES) (SQL: select * from information_schema.tables where table_schema = pixelfed_database2 and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:712
    708▕         // If an exception occurs when attempting to run a query, we'll format the error
    709▕         // message to include the bindings with SQL, which will make this exception a
    710▕         // lot more helpful to the developer instead of just the database's errors.
    711▕         catch (Exception $e) {
  ➜ 712▕             throw new QueryException(
    713▕                 $query, $this->prepareBindings($bindings), $e
    714▕             );
    715▕         }
    716▕     }

      +36 vendor frames

Then I switch to DB_SOCKET

   InvalidArgumentException 

  Missing UNIX domain socket path.

  at vendor/predis/predis/src/Connection/StreamConnection.php:193
    189▕      */
    190▕     protected function unixStreamInitializer(ParametersInterface $parameters)
    191▕     {
    192▕         if (!isset($parameters->path)) {
  ➜ 193▕             throw new \InvalidArgumentException('Missing UNIX domain socket path.');
    194▕         }
    195▕ 
    196▕         $flags = STREAM_CLIENT_CONNECT;
    197▕ 

      +21 vendor frames 
  22  database/migrations/2021_08_30_050137_add_software_column_to_instances_table.php:44
      App\Jobs\InstancePipeline\InstanceCrawlPipeline::dispatch()

  23  database/migrations/2021_08_30_050137_add_software_column_to_instances_table.php:24
      AddSoftwareColumnToInstancesTable::runPostMigration()

When I try to run the second time:

Migrating: 2021_08_30_050137_add_software_column_to_instances_table

   Illuminate\Database\QueryException 

  SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'software' (SQL: alter table `instances` add `software` varchar(191) null, add `user_count` int unsigned null, add `status_count` int unsigned null, add `last_crawled_at` timestamp null)

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:712
    708▕         // If an exception occurs when attempting to run a query, we'll format the error
    709▕         // message to include the bindings with SQL, which will make this exception a
    710▕         // lot more helpful to the developer instead of just the database's errors.
    711▕         catch (Exception $e) {
  ➜ 712▕             throw new QueryException(
    713▕                 $query, $this->prepareBindings($bindings), $e
    714▕             );
    715▕         }
    716▕     }

      +12 vendor frames 
  13  database/migrations/2021_08_30_050137_add_software_column_to_instances_table.php:22
      Illuminate\Support\Facades\Facade::__callStatic()

      +22 vendor frames 
  36  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()

Pixelfed needs installation instructions for novice sysadmins

One of Pixelfed's largest barriers to adoption is deploy-ability. Mastodon has provided a good example of one way which this can be alleviated: line-by-line / command-by-command instructions that assume nothing more than a Linux version and root privs.

Today, Pixelfed has a lot list of starting assumptions about the state of a machine. I suggest backing away from those assumptions, and giving more thorough guidance for sysadmins.

For example, in "Preparing your Machine" start with nothing more than "This guide assumes you have Ubuntu XX.XX LTS and root access." From there, give a predictable set of commands to prepare a system. Then a predictable set of commands to deploy Pixelfed.

Another example: "Make sure to set the appropriate permissions. For example, if you are running your processes through the http user/group, then run the following:" leaves a lot of ambiguity for people about what the appropriate permissions are. The example doesn't translate for all cases. Consider replacing that with a few chmod commands that are guaranteed to work for a specific Linux flavor.

Mastodon opens with, "If you are setting up a fresh machine, it is recommended that you secure it first. Assuming that you are running Ubuntu 20.04:" As a result, they give instructions that work VERY reliably for Ubuntu 20.04, making it easy to deploy. Pixelfed has been more black magic.

YUNoHost is a help here to a degree, but requires additional resource overhead. A robust deployment guide on part with Mastodon's would help elicit more Pixelfed adoption.

number of likes not shown on the overview page

Dear all,

The overview of my pictures (profile) does not show the number of likes per picture again. This has been an issue a while ago too. Could this be fixed? Now I need to go to each photo to see who liked them. I do not care if others do not see it but I do like to see them

Website blocked in India ; https://docs.pixelfed.org/

CloudFlare servers in India get MITMd by the network provider (Airtel ISP) if the upstream is GitHub Pages and configured without end-to-end TLS.

So I get the following with a padlock:
image

Here's a detailed curl log:

curl -vvv https://docs.pixelfed.org
*   Trying 104.21.76.155:443...
* TCP_NODELAY set
* Connected to docs.pixelfed.org (104.21.76.155) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=Cloudflare, Inc.; CN=pixelfed.org
*  start date: Jun  5 00:00:00 2021 GMT
*  expire date: Jun  4 23:59:59 2022 GMT
*  subjectAltName: host "docs.pixelfed.org" matched cert's "*.pixelfed.org"
*  issuer: C=US; O=Cloudflare, Inc.; CN=Cloudflare Inc ECC CA-3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x555c62223e30)
> GET / HTTP/2
> Host: docs.pixelfed.org
> user-agent: curl/7.68.0
> accept: */*
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 256)!
< HTTP/2 200 
< date: Sat, 08 Jan 2022 05:21:21 GMT
< content-type: text/html
< pragma: no-cache
< cache-control: no-cache
< cf-cache-status: DYNAMIC
< expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=JbNyelZ52h4ZSKnfhX0ZMHWv855HoqufbLcTonzlQ4%2BWIqYMoyvBwxt%2FoVX5v7xkDPkEjWWuiYbsYr%2FcSYyBFELYYBczPagh3Ln2QpwDgitpaX3ZRrDMy5%2B6VtDglxzL%2F70qpQ%3D%3D"}],"group":"cf-nel","max_age":604800}
< nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
< server: cloudflare
< cf-ray: 6ca2fb602a311dad-BLR
< alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400, h3-28=":443"; ma=86400, h3-27=":443"; ma=86400
< 
* Connection #0 to host docs.pixelfed.org left intact
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0" /><style>body{margin:0px;padding:0px;}iframe{width:100%;height:100%}</style><iframe src="https://www.airtel.in/dot/" width="100%" height="100%" frameborder=0></iframe>

CloudFlare has known about this issue for years (actively hostile ISPs) and they don't seem to be doing anything about it. The two fixes here are:

  1. Switch from CloudFlare to direct GitHub Pages, which supports TLS now.
  2. Enable HTTPS on GitHub pages, and switch the upstream on CloudFlare to get strict SSL instead of flexible.

Reference for the fixes: https://github.com/captn3m0/hello-cloudflare/blob/main/README.md#help-my-website-is-blocked
courtesy : @captn3m0
Similar issue: RockstarLang/codewithrockstar.com#11

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.