Merge pull request #3479 from shleeable/patch-17

Diagnostics view
This commit is contained in:
daniel 2022-05-18 00:05:12 -06:00 committed by GitHub
commit 50dc231b86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,7 +3,6 @@
@section('section') @section('section')
<div class="title mb-4"> <div class="title mb-4">
<h3 class="font-weight-bold">Diagnostics</h3> <h3 class="font-weight-bold">Diagnostics</h3>
<p class="lead mb-0">Instance diagnostics</p>
</div> </div>
<div class="pb-3 border-bottom"> <div class="pb-3 border-bottom">
@ -11,30 +10,24 @@
Information Information
<span class="small text-primary ml-3 copy-information cursor-pointer text-uppercase font-weight-bold">Copy</span> <span class="small text-primary ml-3 copy-information cursor-pointer text-uppercase font-weight-bold">Copy</span>
</p> </p>
<ul class="information">
<div class="information">
<ul>
<p class="font-weight-bold text-muted">
Troubleshooting
</p>
<li> <li>
<strong>APP_URL:</strong> <strong>Bootstrap:</strong>
<span>{{config_cache('app.url')}}</span> <span>{{is_writable(base_path('bootstrap/')) ? 'Writable ✅' : 'Not writable ❌'}}</span>
</li> </li>
<li> <li>
<strong>APP_DOMAIN:</strong> <strong>Storage:</strong>
<span>{{config_cache('pixelfed.domain.app')}}</span> <span>{{is_writable(base_path('storage/')) ? 'Writable ✅' : 'Not writable ❌'}}</span>
</li>
@if(function_exists('shell_exec'))
<li>
<strong>Version:</strong>
<span>{{config('pixelfed.version')}}-{{ @shell_exec('git log --pretty="%h" -n1 HEAD') ?? 'unknown git commit' }}</span>
</li>
@else
<li>
<strong>Version:</strong>
<span>{{config('pixelfed.version')}}</span>
</li>
@endif
<li>
<strong>PHP:</strong>
<span>{{phpversion()}}</span>
</li> </li>
@foreach([ @foreach([
'bcmath', 'bcmath',
'gd', 'gd',
@ -47,109 +40,21 @@
'openssl', 'openssl',
'redis' 'redis'
] as $ext) ] as $ext)
@if(!extension_loaded($ext)) @if(!extension_loaded($ext))
<li> <li>
<strong>PHP-{{$ext}}:</strong> <strong>PHP Module {{$ext}}:</strong>
<span>Not installed/loaded</span> <span>Not installed/Not loaded </span>
</li> </li>
@endif @endif
@endforeach @endforeach
<li> <li>
<strong>Database:</strong> <strong><span class="badge badge-primary">DATABASE</span> Ping:</strong>
@php($v = explode(' ', DB::select('select version() as version')[0]->version)) <span>{{ \DB::connection()->getPDO() ? 'Pong! Connected to DB "' . \DB::connection()->getDatabaseName() . '" ✅' : 'DB Not Responding ❌' }}</span>
<span>{{config('database.default')}} ({{count($v) == 1 ? $v[0] : $v[1]}})</span>
</li>
<li>
<strong>Bootstrap:</strong>
<span>{{is_writable(base_path('bootstrap/')) ? 'Writable' : 'Not writable'}}</span>
</li>
<li>
<strong>Storage:</strong>
<span>{{is_writable(base_path('storage/')) ? 'Writable' : 'Not writable'}}</span>
</li>
<li>
<strong>Image Driver:</strong>
<span>{{ config('image.driver') }}</span>
</li> </li>
<li> <li>
<strong><span class="badge badge-primary">REDIS</span> Ping:</strong> <strong><span class="badge badge-primary">REDIS</span> Ping:</strong>
<span>{{ \Illuminate\Support\Facades\Redis::command('ping') ? '✅' : '❌' }}</span> <span>{{ \Illuminate\Support\Facades\Redis::command('ping') ? 'Pong! Connected to Redis ✅' : 'Redis Not Responding ❌' }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP</span> memory_limit:</strong>
<span>{{ ini_get('memory_limit') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP</span> post_max_size:</strong>
<span>{{ ini_get('post_max_size') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP</span> upload_max_filesize:</strong>
<span>{{ ini_get('upload_max_filesize') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Cache Driver:</strong>
<span>{{ config_cache('cache.default') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Mail Driver:</strong>
<span>{{ config_cache('mail.driver') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Mail Host:</strong>
<span>{{ config_cache('mail.host') ? substr(config_cache('mail.host'), 0, 5) . str_repeat('*', strlen(config_cache('mail.host')) - 5) : 'undefined' }}</span>
</li>
@if(config_cache('mail.driver') == 'mailgun')
<li>
<strong><span class="badge badge-primary">APP</span> Mailgun Domain:</strong>
<span>{{ config_cache('services.mailgun.domain') ?? 'undefined' }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Mailgun Secret:</strong>
<span>{{ config_cache('services.mailgun.secret') ? str_repeat('*', strlen(config_cache('services.mailgun.secret'))) : 'undefined' }}</span>
</li>
@endif
@if(config_cache('mail.driver') == 'ses')
<li>
<strong><span class="badge badge-primary">APP</span> SES Key:</strong>
<span>{{ config_cache('services.ses.key') ? str_repeat('*', strlen(config_cache('services.ses.key'))) : 'undefined' }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> SES Secret:</strong>
<span>{{ config_cache('services.ses.secret') ? str_repeat('*', strlen(config_cache('services.ses.secret'))) : 'undefined' }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> SES Region:</strong>
<span>{{ config_cache('services.ses.region') ?? 'undefined' }}</span>
</li>
@endif
<li>
<strong><span class="badge badge-primary">APP</span> Queue Driver:</strong>
<span>{{ config_cache('queue.default') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Session Driver:</strong>
<span>{{ config_cache('session.driver') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Session Lifetime:</strong>
<span>{{ config_cache('session.lifetime') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">APP</span> Session Domain:</strong>
<span>{{ config_cache('session.domain') }}</span>
</li>
<li>
<div class="tt">
<strong><span class="badge badge-primary">CONFIG</span> pixelfed: </strong>
<span class="text-truncate">{!! json_encode(config_cache('pixelfed'), JSON_UNESCAPED_SLASHES) !!}</span>
</div>
</li>
<li>
<div class="tt">
<strong><span class="badge badge-primary">CONFIG</span> federation: </strong>
<span class="text-truncate">{!! json_encode(config_cache('federation'), JSON_UNESCAPED_SLASHES) !!}</span>
</div>
</li> </li>
<li> <li>
<strong><span class="badge badge-primary">ACTIVITYPUB</span> instance actor created: </strong> <strong><span class="badge badge-primary">ACTIVITYPUB</span> instance actor created: </strong>
@ -167,7 +72,6 @@
<strong><span class="badge badge-primary">OAUTH</span> token_expiration</strong> <strong><span class="badge badge-primary">OAUTH</span> token_expiration</strong>
<span>{{ config_cache('instance.oauth.token_expiration') }} days</span> <span>{{ config_cache('instance.oauth.token_expiration') }} days</span>
</li> </li>
<li> <li>
<strong><span class="badge badge-primary">OAUTH</span> public key exists: </strong> <strong><span class="badge badge-primary">OAUTH</span> public key exists: </strong>
<span>{{ file_exists(storage_path('oauth-public.key')) ? '✅' : '❌' }}</span> <span>{{ file_exists(storage_path('oauth-public.key')) ? '✅' : '❌' }}</span>
@ -175,21 +79,739 @@
<li> <li>
<strong><span class="badge badge-primary">OAUTH</span> private key exists: </strong> <strong><span class="badge badge-primary">OAUTH</span> private key exists: </strong>
<span>{{ file_exists(storage_path('oauth-private.key')) ? '✅' : '❌' }}</span> <span>{{ file_exists(storage_path('oauth-private.key')) ? '✅' : '❌' }}</span>
</li>
<hr>
<p class="font-weight-bold text-muted">
Important Information
</p>
@if(function_exists('shell_exec'))
<li>
<strong>Version:</strong>
<span>{{config('pixelfed.version')}}-{{ @shell_exec('git log --pretty="%h" -n1 HEAD') ?? 'unknown git commit' }}</span>
</li>
@else
<li>
<strong>Version:</strong>
<span>{{config('pixelfed.version')}}</span>
</li>
@endif
<li>
<strong>Database:</strong>
@php($v = explode(' ', DB::select('select version() as version')[0]->version))
<span>{{config('database.default')}} ({{count($v) == 1 ? $v[0] : $v[1]}})</span>
</li> </li>
<li> <li>
<strong><span class="badge badge-primary">Storage</span> Cloud Storage: </strong> <strong>APP_URL:</strong>
<span>{{ config_cache('pixelfed.cloud_storage') ? '✅' : '❌' }}</span> <span>{{config_cache('app.url')}}</span>
</li> </li>
<li> <li>
<strong><span class="badge badge-primary">Storage</span> Filesystems default (local/s3/spaces): </strong> <strong>APP_DOMAIN:</strong>
<span>{{ config_cache('filesystems.default')}}</span> <span>{{config_cache('pixelfed.domain.app')}}</span>
</li> </li>
<li> <li>
<strong><span class="badge badge-primary">Network</span> TrustedProxy: </strong> <strong>ADMIN_DOMAIN:</strong>
<span>{{ config('trustedproxy.proxies') }}</span> <span>{{config_cache('pixelfed.domain.admin')}}</span>
</li>
<li>
<strong>SESSION_DOMAIN:</strong>
<span>{{config_cache('session.domain')}}</span>
</li> </li>
</ul> <hr>
<p class="font-weight-bold text-muted">
PHP Variables
</p>
<li>
<strong>PHP:</strong>
<span>{{phpversion()}}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> memory_limit:</strong>
<span>{{ ini_get('memory_limit') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> post_max_size:</strong>
<span>{{ ini_get('post_max_size') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> upload_max_filesize:</strong>
<span>{{ ini_get('upload_max_filesize') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> max_file_uploads:</strong>
<span>{{ ini_get('max_file_uploads') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> max_execution_time:</strong>
<span>{{ ini_get('max_execution_time') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> max_input_time:</strong>
<span>{{ ini_get('max_input_time') }}</span>
</li>
<li>
<strong><span class="badge badge-primary">PHP INI</span> file_uploads:</strong>
<span>{{ ini_get('file_uploads') ? '✅' : '❌' }}</span>
</li>
<hr>
<p class="font-weight-bold text-muted">
Pixelfed Variables (No Secrets)
</p>
<table style="width:100%" class="table">
<thead class="bg-light">
<tr>
<th width="5%" scope="col" class="border-0 text-dark">CONFIG</th>
<th width="20%"scope="col" class="border-0 text-dark">Variable Name</th>
<th width="40%"scope="col" class="border-0 text-dark">Details</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="badge badge-primary">APP</span></td>
<td><strong>APP_NAME</strong></td>
<td><span>"{{config_cache('app.name')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">APP</span></td>
<td><strong>APP_ENV</strong></td>
<td><span>"{{config_cache('app.env')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">APP</span></td>
<td><strong>APP_DEBUG</strong></td>
<td><span>{{config_cache('app.debug') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">APP</span></td>
<td><strong>APP_URL</strong></td>
<td><span>"{{config_cache('app.url')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">APP</span></td>
<td><strong>APP_LOCALE</strong></td>
<td><span>"{{config_cache('app.locale')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">APP</span></td>
<td><strong>APP_FALLBACK_LOCALE</strong></td>
<td><span>"{{config_cache('app.fallback_locale')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">BROADCASTING</span></td>
<td><strong>BROADCAST_DRIVER</strong></td>
<td><span>"{{config_cache('broadcasting.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">CACHE</span></td>
<td><strong>CACHE_DRIVER</strong></td>
<td><span>"{{config_cache('cache.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">CAPTCHA</span></td>
<td><strong>CAPTCHA_ENABLED</strong></td>
<td><span>{{ config_cache('captcha.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">DATABASE</span></td>
<td><strong>DB_CONNECTION</strong></td>
<td><span>"{{config_cache('database.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">DATABASE</span></td>
<td><strong>REDIS_CLIENT</strong></td>
<td><span>"{{config_cache('database.redis.client')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">EXP</span></td>
<td><strong>EXP_LC</strong></td>
<td><span>{{config_cache('exp.lc') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">EXP</span></td>
<td><strong>EXP_TOP</strong></td>
<td><span>{{config_cache('exp.top') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">EXP</span></td>
<td><strong>EXP_POLLS</strong></td>
<td><span>{{config_cache('exp.polls') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">EXP</span></td>
<td><strong>EXP_CPT</strong></td>
<td><span>{{config_cache('exp.cached_public_timeline') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">EXP</span></td>
<td><strong>EXP_GPS</strong></td>
<td><span>{{config_cache('exp.gps') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">EXP</span></td>
<td><strong>EXP_EMC</strong></td>
<td><span>{{config_cache('exp.emc') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>ACTIVITY_PUB</strong></td>
<td><span>{{config_cache('federation.activitypub.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>AP_OUTBOX</strong></td>
<td><span>{{config_cache('federation.activitypub.outbox') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>AP_INBOX</strong></td>
<td><span>{{config_cache('federation.activitypub.inbox') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>AP_SHAREDINBOX</strong></td>
<td><span>{{config_cache('federation.activitypub.sharedInbox') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>AP_REMOTE_FOLLOW</strong></td>
<td><span>{{config_cache('federation.activitypub.remoteFollow') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>ACTIVITYPUB_DELIVERY_TIMEOUT</strong></td>
<td><span>"{{config_cache('federation.activitypub.delivery.timeout')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>ACTIVITYPUB_DELIVERY_CONCURRENCY</strong></td>
<td><span>"{{config_cache('federation.activitypub.delivery.concurrency')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>AP_LOGGER_ENABLED</strong></td>
<td><span>{{config_cache('federation.activitypub.delivery.logger.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>ATOM_FEEDS</strong></td>
<td><span>{{config_cache('federation.atom.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>REMOTE_AVATARS</strong></td>
<td><span>{{config_cache('federation.avatars.store_local') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>NODEINFO</strong></td>
<td><span>{{config_cache('federation.nodeinfo.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>WEBFINGER</strong></td>
<td><span>{{config_cache('federation.webfinger.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>PF_NETWORK_TIMELINE</strong></td>
<td><span>{{config_cache('federation.network_timeline') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>CUSTOM_EMOJI</strong></td>
<td><span>{{config_cache('federation.custom_emoji.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FEDERATION</span></td>
<td><strong>CUSTOM_EMOJI_MAX_SIZE</strong></td>
<td><span>"{{config_cache('federation.custom_emoji.max_size')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FILESYSTEMS</span></td>
<td><strong>FILESYSTEM_DRIVER</strong></td>
<td><span>"{{config_cache('filesystems.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">FILESYSTEMS</span></td>
<td><strong>FILESYSTEM_CLOUD</strong></td>
<td><span>"{{config_cache('filesystems.cloud')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HASHING</span></td>
<td><strong>BCRYPT_COST</strong></td>
<td><span>"{{config_cache('hashing.bcrypt.rounds')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_PREFIX</strong></td>
<td><span>"{{config_cache('horizon.prefix')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_MEMORY_LIMIT</strong></td>
<td><span>"{{config_cache('horizon.memory_limit')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_BALANCE_STRATEGY</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.balance')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_MIN_PROCESSES</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.minProcesses')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_MAX_PROCESSES</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.maxProcesses')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_SUPERVISOR_MEMORY</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.memory')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_SUPERVISOR_TRIES</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.tries')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_SUPERVISOR_NICE</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.nice')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_SUPERVISOR_TIMEOUT</strong></td>
<td><span>"{{config_cache('horizon.environments.production.supervisor-1.timeout')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">HORIZON</span></td>
<td><strong>HORIZON_DARKMODE</strong></td>
<td><span>{{config_cache('horizon.darkmode') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">IMAGE</span></td>
<td><strong>IMAGE_DRIVER </strong></td>
<td><span>"{{config_cache('image.driver')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_DESCRIPTION</strong></td>
<td><span>"{{config_cache('instance.description')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_CONTACT_FORM</strong></td>
<td><span>{{config_cache('instance.contact.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_CONTACT_MAX_PER_DAY</strong></td>
<td><span>"{{config_cache('instance.contact.max_per_day')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_DISCOVER_PUBLIC</strong></td>
<td><span>{{config_cache('instance.discover.public') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>EXP_LOOPS</strong></td>
<td><span>{{config_cache('instance.discover.loops.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_PUBLIC_HASHTAGS</strong></td>
<td><span>{{config_cache('instance.discover.tags.is_public') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_CONTACT_EMAIL</strong></td>
<td><span>"{{config_cache('instance.email')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>INSTANCE_PUBLIC_LOCAL_TIMELINE</strong></td>
<td><span>{{config_cache('instance.timeline.local.is_public') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>PAGE_404_HEADER</strong></td>
<td><span>"{{config_cache('instance.page.404.header')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>PAGE_404_BODY</strong></td>
<td><span>"{{config_cache('instance.page.404.body')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>PAGE_503_HEADER</strong></td>
<td><span>"{{config_cache('instance.page.503.header')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>PAGE_503_BODY</strong></td>
<td><span>"{{config_cache('instance.page.503.body')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>BANNED_USERNAMES</strong></td>
<td><span>"{{config_cache('instance.username.banned')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>USERNAME_REMOTE_FORMAT</strong></td>
<td><span>"{{config_cache('instance.username.remote.format')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>USERNAME_REMOTE_CUSTOM_TEXT</strong></td>
<td><span>"{{config_cache('instance.username.remote.custom')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>STORIES_ENABLED</strong></td>
<td><span>{{config_cache('instance.stories.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>RESTRICTED_INSTANCE</strong></td>
<td><span>{{config_cache('instance.restricted.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>OAUTH_TOKEN_DAYS</strong></td>
<td><span>"{{config_cache('instance.oauth.token_expiration')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>OAUTH_REFRESH_DAYS</strong></td>
<td><span>"{{config_cache('instance.oauth.refresh_expiration')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>OAUTH_PAT_ENABLED</strong></td>
<td><span>{{config_cache('instance.oauth.pat.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>OAUTH_PAT_ID</strong></td>
<td><span>"{{config_cache('instance.oauth.pat.id')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>ENABLE_COVID_LABEL</strong></td>
<td><span>{{config_cache('instance.label.covid.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>COVID_LABEL_URL</strong></td>
<td><span>"{{config_cache('instance.label.covid.url')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>COVID_LABEL_ORG</strong></td>
<td><span>"{{config_cache('instance.label.covid.org')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">INSTANCE</span></td>
<td><strong>ENABLE_CONFIG_CACHE</strong></td>
<td><span>{{config_cache('instance.enable_cc') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">LDAP</span></td>
<td><strong>LDAP_CONNECTION</strong></td>
<td><span>"{{config_cache('ldap.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">LDAP</span></td>
<td><strong>LDAP_LOGGING</strong></td>
<td><span>{{config_cache('ldap.logging') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">LDAP</span></td>
<td><strong>LDAP_CACHE</strong></td>
<td><span>{{config_cache('ldap.cache.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">LOGGING</span></td>
<td><strong>LOG_CHANNEL</strong></td>
<td><span>"{{config_cache('logging.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">LOGGING</span></td>
<td><strong>LOG_LEVEL (stack)</strong></td>
<td><span>"{{config_cache('logging.channels.single.level')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MAIL</span></td>
<td><strong>MAIL_DRIVER</strong></td>
<td><span>"{{config_cache('mail.driver')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MAIL</span></td>
<td><strong>MAIL_HOST</strong></td>
<td><span>"{{config_cache('mail.host')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MAIL</span></td>
<td><strong>MAIL_PORT</strong></td>
<td><span>"{{config_cache('mail.port')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MAIL</span></td>
<td><strong>MAIL_FROM_ADDRESS</strong></td>
<td><span>"{{config_cache('mail.from.address')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MAIL</span></td>
<td><strong>MAIL_FROM_NAME</strong></td>
<td><span>"{{config_cache('mail.from.name')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MAIL</span></td>
<td><strong>MAIL_ENCRYPTION</strong></td>
<td><span>"{{config_cache('mail.encryption')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">MEDIA</span></td>
<td><strong>MEDIA_EXIF_DATABASE</strong></td>
<td><span>{{config_cache('media.exif.batabase') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>ADMIN_DOMAIN</strong></td>
<td><span>"{{config_cache('pixelfed.domain.admin')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>APP_DOMAIN</strong></td>
<td><span>"{{config_cache('pixelfed.domain.app')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MEMORY_LIMIT</strong></td>
<td><span>"{{config_cache('pixelfed.memory_limit')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>OPEN_REGISTRATION</strong></td>
<td><span>{{config_cache('pixelfed.open_registration') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_ACCOUNT_SIZE (KB)</strong></td>
<td><span>"{{config_cache('pixelfed.max_account_size')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_PHOTO_SIZE (KB)</strong></td>
<td><span>"{{config_cache('pixelfed.max_photo_size')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_AVATAR_SIZE (KB)</strong></td>
<td><span>"{{config_cache('pixelfed.max_avatar_size')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_CAPTION_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.max_caption_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_BIO_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.max_bio_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_NAME_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.max_name_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MIN_PASSWORD_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.min_password_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MAX_ALBUM_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.max_album_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>ENFORCE_EMAIL_VERIFICATION</strong></td>
<td><span>{{config_cache('pixelfed.enforce_email_verification') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>IMAGE_QUALITY (1-100)</strong></td>
<td><span>"{{config_cache('pixelfed.image_quality')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>ACCOUNT_DELETION</strong></td>
<td><span>{{config_cache('pixelfed.account_deletion') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>ACCOUNT_DELETE_AFTER</strong></td>
<td><span>{{config_cache('pixelfed.account_delete_after') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_ENABLE_CLOUD</strong></td>
<td><span>{{config_cache('pixelfed.cloud_storage') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_MAX_USERS</strong></td>
<td><span>{{config_cache('pixelfed.max_users') ? config('pixelfed.max_users') : '❌ false'}}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_OPTIMIZE_IMAGES</strong></td>
<td><span>{{config_cache('pixelfed.optimize_image') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_OPTIMIZE_VIDEOS</strong></td>
<td><span>{{config_cache('pixelfed.optimize_video') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_USER_INVITES</strong></td>
<td><span>{{config_cache('pixelfed.user_invites.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_USER_INVITES_TOTAL_LIMIT</strong></td>
<td><span>"{{config_cache('pixelfed.user_invites.limit.total')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_USER_INVITES_DAILY_LIMIT</strong></td>
<td><span>"{{config_cache('pixelfed.user_invites.limit.daily')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_USER_INVITES_MONTHLY_LIMIT</strong></td>
<td><span>"{{config_cache('pixelfed.user_invites.limit.monthly')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_MAX_COLLECTION_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.max_collection_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>MEDIA_TYPES</strong></td>
<td><span>"{{config_cache('pixelfed.media_types')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>LIMIT_ACCOUNT_SIZE</strong></td>
<td><span>{{config_cache('pixelfed.enforce_account_limit') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>IMPORT_INSTAGRAM</strong></td>
<td><span>{{config_cache('pixelfed.import.instagram.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>IMPORT_INSTAGRAM_POST_LIMIT</strong></td>
<td><span>"{{config_cache('pixelfed.import.instagram.limits.posts')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>IMPORT_INSTAGRAM_SIZE_LIMIT</strong></td>
<td><span>"{{config_cache('pixelfed.import.instagram.limits.size')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>OAUTH_ENABLED</strong></td>
<td><span>{{config_cache('pixelfed.oauth_enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_BOUNCER_ENABLED</strong></td>
<td><span>{{config_cache('pixelfed.bouncer.enabled') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_MEDIA_FAST_PROCESS</strong></td>
<td><span>{{config_cache('pixelfed.media_fast_process') ? '✅ true' : '❌ false' }}</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PIXELFED</span></td>
<td><strong>PF_MEDIA_MAX_ALTTEXT_LENGTH</strong></td>
<td><span>"{{config_cache('pixelfed.max_altext_length')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">PURIFY</span></td>
<td><strong>RESTRICT_HTML_TYPES</strong></td>
<td><span>BROKEN</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">QUEUE</span></td>
<td><strong>QUEUE_DRIVER</strong></td>
<td><span>"{{config_cache('queue.default')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">SESSION</span></td>
<td><strong>SESSION_DRIVER</strong></td>
<td><span>"{{config_cache('session.driver')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">SESSION</span></td>
<td><strong>SESSION_LIFETIME</strong></td>
<td><span>"{{config_cache('session.lifetime')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">SESSION</span></td>
<td><strong>SESSION_DOMAIN</strong></td>
<td><span>"{{config_cache('session.domain')}}"</span></td>
</tr>
<tr>
<td><span class="badge badge-primary">TRUSTEDPROXY</span></td>
<td><strong>TRUST_PROXIES</strong></td>
<td><span>"{{config_cache('trustedproxy.proxies')}}"</span></td>
</tr>
</tbody>
</table>
</div>
</ul>
</div> </div>
<div class="pb-3 border-bottom"> <div class="pb-3 border-bottom">
<div class="form-group mb-0"> <div class="form-group mb-0">