<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pelican on Cloudron -  free game server control panel offering high flying security.]]></title><description><![CDATA[<ul>
<li><strong>Main Page</strong>: <a href="https://pelican.dev/" target="_blank" rel="noopener noreferrer nofollow ugc">https://pelican.dev/</a></li>
<li><strong>Git</strong>: <a href="https://github.com/pelican-dev/panel" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/pelican-dev/panel</a></li>
<li><strong>Licence</strong>: . AGPL v3.0</li>
<li><strong>Docker</strong>: Yes</li>
<li><strong>Demo</strong>: <a href="https://demo.pelican.dev/login" target="_blank" rel="noopener noreferrer nofollow ugc">https://demo.pelican.dev/login</a></li>
</ul>
<hr />
<ul>
<li><strong>Summary</strong>: Use this panel to deploy games on your server</li>
</ul>
<hr />
<ul>
<li><strong>Notes</strong>: The range of games it supports is fantastic. It is still in beta. Pelican forked from Pterodactyl.</li>
</ul>
<hr />
<ul>
<li><strong>Alternative to / Libhunt link</strong>: e.g. <a href="https://alternativeto.net/software/pterodactyl/" target="_blank" rel="noopener noreferrer nofollow ugc">https://alternativeto.net/software/pterodactyl/</a></li>
<li><strong>Screenshots</strong>:</li>
</ul>
<p dir="auto"><img src="/assets/uploads/files/1749905700975-2025-06-14_13-38-29-resized.png" alt="2025-06-14_13-38-29.png" class=" img-fluid img-markdown" /> <img src="/assets/uploads/files/1749905701635-2025-06-14_13-37-43-resized.png" alt="2025-06-14_13-37-43.png" class=" img-fluid img-markdown" /> <img src="/assets/uploads/files/1749905702166-2025-06-14_13-37-12.png" alt="2025-06-14_13-37-12.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.cloudron.io/topic/13935/pelican-on-cloudron-free-game-server-control-panel-offering-high-flying-security.</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 02:42:39 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/13935.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jun 2025 12:57:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pelican on Cloudron -  free game server control panel offering high flying security. on Wed, 30 Jul 2025 14:50:39 GMT]]></title><description><![CDATA[<p dir="auto">We attempted to package this but failed. (First packaging attempt)</p>
<p dir="auto">If somebody else wants to try, this is what we learned:</p>
<pre><code># Lessons from Attempting to Package Pelican Panel for Cloudron


## Key Lessons Learned
Here are the top 5 things that caused the most trouble:

- **Health Check Stalls**: Pelican's slow startup (e.g., DB migrations, asset compilation) often times out Cloudron's health checks. Extend the Dockerfile's `HEALTHCHECK --start-period` to 120s+ for real use, or use a temporary dummy (e.g., `CMD true`) to bypass for debugging—revert it later to avoid false "healthy" states.
- **Env Var Management**: Cloudron rejects an "environment" array in the manifest (validation error: "Unknown property"). Hardcode defaults in Dockerfile `ENV` lines, then manually edit `/app/data/.env` via SSH post-install to inject Cloudron placeholders like `${MYSQL_HOST}` (get them from `cloudron inspect --app &lt;fqdn&gt;`).
- **Manifest Validation Issues**: Cloudron is strict—unsupported fields fail installs outright. Stick to the official schema (check [Cloudron docs](https://cloudron.io/documentation/custom-apps/manifest/)), test with JSON validators, and remove extras like custom env sections.
- **Git Merge Conflicts**: Editing files locally vs. directly on GitHub leads to push rejections. Always run `git pull origin main` before changes, and resolve conflicts by manually editing/removing markers (e.g., `&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD`, `=======`, `&gt;&gt;&gt;&gt;&gt;&gt;&gt;`).
- **Image Registry Choices**: GHCR (GitHub Container Registry) can have pull/auth issues in Cloudron; Docker Hub is more reliable for public images. Ensure the manifest's "dockerImage" matches your pushed tag, and verify pulls locally before installing.

## Useful Code Snippets
These are anonymized examples that helped during troubleshooting. Adapt them to your setup.

### Basic CloudronManifest.json (Validated, No Invalid Fields)
```json
{
  "id": "dev.pelican.panel",
  "title": "Pelican Panel",
  "version": "1.0.0-beta22",
  "description": "Open-source game server management panel",
  "tagline": "Manage your game servers with Pelican",
  "website": "https://pelican.dev",
  "icon": "logo.png",
  "healthCheckPath": "/",
  "httpPort": 80,
  "manifestVersion": 2,
  "dockerImage": "yourusername/pelican-panel:latest",
  "addons": {
    "localstorage": {},
    "mysql": {},
    "sendmail": {}
  },
  "postInstallMessage": "After installation, please visit https://${DOMAIN}/installer to complete the setup."
}
</code></pre>
<h3>Dockerfile Snippets (Key Sections for Env, Health Check, and Storage)</h3>
<pre><code class="language-dockerfile"># Default ENV vars (add after FROM php:8.2-fpm-alpine)
ENV APP_ENV=production
ENV APP_DEBUG=false
ENV APP_URL=https://${APP_DOMAIN}
ENV APP_KEY=base64:your-generated-key-here  # Generate with: docker run -it php:8.2-fpm-alpine php -r "echo 'base64:' . base64_encode(random_bytes(32));"
ENV DB_CONNECTION=mysql
ENV DB_HOST=127.0.0.1
ENV DB_PORT=3306
ENV DB_DATABASE=pelican
ENV DB_USERNAME=root
ENV DB_PASSWORD=secret
ENV MAIL_DRIVER=sendmail
ENV MAIL_FROM_ADDRESS=admin@${APP_DOMAIN}
ENV MAIL_FROM_NAME="Pelican Panel"

# Production HEALTHCHECK (extend start-period for slow startups)
HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=3 \
  CMD curl -f http://localhost/ || exit 1

# Dummy HEALTHCHECK (debug only - auto-passes)
# HEALTHCHECK --interval=5s --timeout=3s --start-period=10s --retries=3 \
#   CMD true || exit 0

# Storage symlinks for Cloudron persistence (add in RUN)
RUN ln -s /app/data/.env /var/www/html/.env &amp;&amp; \
    ln -s /app/data/storage /var/www/html/storage &amp;&amp; \
    chown -R www-data:www-data /var/www/html /app/data
</code></pre>
<h3>Post-Install SSH Commands for Fixes</h3>
<pre><code class="language-bash"># SSH to server, then:
cloudron logs --app your-app-fqdn  # Check high-level logs
docker ps | grep pelican  # Get container ID
docker logs &lt;container-id&gt;  # Detailed app logs
docker exec -it &lt;container-id&gt; /bin/sh  # Enter container
# Inside: apk add nano; nano /app/data/.env  # Edit env vars
# Then: php artisan migrate --force; supervisorctl restart all
# Exit and: cloudron restart --app your-app-fqdn
</code></pre>
<h2>Final Notes</h2>
<ul>
<li><strong>Testing Tip</strong>: Run the image locally (<code>docker run -p 80:80 yourimage</code>) before Cloudron to verify health checks and env vars.</li>
<li><strong>Why It's Tricky</strong>: Pelican (Laravel-based) needs precise env setup and can be slow to boot—manual SSH tweaks were essential.</li>
<li><strong>Sharing</strong>: If you build on this, post updates here or on Pelican's GitHub.</li>
</ul>
<pre><code></code></pre>
]]></description><link>https://forum.cloudron.io/post/111016</link><guid isPermaLink="true">https://forum.cloudron.io/post/111016</guid><dc:creator><![CDATA[LoudLemur]]></dc:creator><pubDate>Wed, 30 Jul 2025 14:50:39 GMT</pubDate></item></channel></rss>