-
Notifications
You must be signed in to change notification settings - Fork 319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add EasyPanel Template for OpnForm with 1-Click Deploy Button #627
Comments
/bounty 100 |
💎 $100 bounty • OpnFormSteps to solve:
Thank you for contributing to JhumanJ/OpnForm! Add a bounty • Share on socials
|
/attempt #627
|
Hey @ibishal are you comfortable doing this? If so then yes - please read the full issue! |
will complete this by EOD ! |
Sounds good! Please note that you need to submit the template to the EasyPanel repository following their contribution guidelines, thanks! |
Opened a pr at easypanel repo(easypanel-io/templates#634) |
Hey @ibishal thanks for this? Does it work for you? I tried on my easypanel instance to use the schema generated but it failed: back-end seem stuck on "Waiting for DB to be ready". Although front-end seem to work Also can we automatically assign a URL to the project on creation? |
Actually i dont have any VPS so i could not test on easypanel instance but i have test similar step on docker, it works try with this import {
Output,
randomPassword,
randomString,
Services,
} from "~templates-utils";
import { Input } from "./meta";
export function generate(input: Input): Output {
const services: Services = [];
const appKey = Buffer.from(randomString(32)).toString("base64");
const databasePassword = randomPassword();
const jwtSecret = randomString(40);
const sharedSecret = randomString(40);
const apiEnvironment = [
`APP_NAME=OpnForm`,
`APP_ENV=production`,
`APP_KEY=base64:${appKey}`,
`APP_DEBUG=false`,
`APP_URL=https://$(PRIMARY_DOMAIN)`,
`DB_HOST=$(PROJECT_NAME)_${input.databaseServiceName}`,
`REDIS_HOST=$(PROJECT_NAME)_${input.redisServiceName}`,
`DB_DATABASE=$(PROJECT_NAME)`,
`DB_USERNAME=postgres`,
`DB_PASSWORD=${databasePassword}`,
`DB_CONNECTION=pgsql`,
`FILESYSTEM_DISK=local`,
`LOCAL_FILESYSTEM_VISIBILITY=public`,
`JWT_SECRET=${jwtSecret}`,
`FRONT_API_SECRET=${sharedSecret}`,
].join("\n");
services.push({
type: "postgres",
data: {
serviceName: input.databaseServiceName,
password: databasePassword,
command: "",
},
});
services.push({
type: "redis",
data: {
serviceName: input.redisServiceName,
},
});
services.push({
type: "app",
data: {
serviceName: input.apiServiceName,
env: apiEnvironment,
source: {
type: "image",
image: input.apiServiceImage,
},
mounts: [
{
type: "volume",
name: "opnform-storage",
mountPath: "/usr/share/nginx/html/storage",
},
],
},
});
services.push({
type: "app",
data: {
serviceName: input.workerServiceName,
env: apiEnvironment + "\nIS_API_WORKER=true",
source: {
type: "image",
image: input.apiServiceImage,
},
mounts: [
{
type: "volume",
name: "opnform-storage",
mountPath: "/usr/share/nginx/html/storage",
},
],
},
});
services.push({
type: "app",
data: {
serviceName: input.uiServiceName,
env: [
`NUXT_PUBLIC_APP_URL=/`,
`NUXT_PUBLIC_API_BASE=/api`,
`NUXT_API_SECRET=${sharedSecret}`,
].join("\n"),
source: {
type: "image",
image: input.uiServiceImage,
},
},
});
services.push({
type: "app",
data: {
serviceName: input.ingressServiceName,
source: {
type: "image",
image: "nginx:1",
},
domains: [
{
host: "$(EASYPANEL_DOMAIN)",
port: 80,
},
],
},
});
return { services };
} |
How should I try this? I used the schema generated in this comment easypanel-io/templates#634 (comment) https://deploy-preview-634--easypanel-templates.netlify.app/opnform |
can you try with this schema
cc @JhumanJ |
Still not working unfortunately |
@ibishal: Reminder that in 7 days the bounty will become up for grabs, so please submit a pull request before then 🙏 |
I tried this template and it is solid, but there are errors:
|
I have progress, now at least I got to API container, but in it I get "GET /index.php" 404 and I type in the browser https://<example-domain.com>/api/fonts/ As if in the API container I have an extra prefix api/ on my route? |
The bounty is up for grabs! Everyone is welcome to |
so are you doing the above ? |
Yes, I partially described the process here. I did several things, including php artisan migrate --force in the API container to initialize the DB. |
Add EasyPanel Template for OpnForm with 1-Click Deploy Button
We’d love to have an EasyPanel template for OpnForm, our open-source form builder. The goal is to enable users to deploy OpnForm with a single click through EasyPanel.
Background:
OpnForm already has a working Docker setup, which you can find in our deployment documentation. The Docker configuration includes everything needed for running the application. The primary task for this issue is to adapt the Docker setup for EasyPanel and create a 1-click deploy button.
Deliverables:
EasyPanel Template: A template that adapts the existing Docker setup to EasyPanel.
.env File Generator Script: A script (or modifications to the current one) that generates
.env
files based on the EasyPanel deployment setup. Currently, we use scripts/setup-env.sh, but we likely need to adapt or create an equivalent script for EasyPanel.1-Click Deploy Button:
docs
.Merge Request to EasyPanel Repository:
Resources:
Skills Required:
If you have any questions or need clarification on this issue, feel free to comment below! 😊
Thank you for contributing to OpnForm!
The text was updated successfully, but these errors were encountered: