-
Notifications
You must be signed in to change notification settings - Fork 406
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
App Submission: LinkStack - Self-hosted open-source Linktree alternative #1537
Conversation
App Submission: LinkStack - Self-hosted open-source Linktree alternative
Thanks for submitting LinkStack @dennysubke! (and for your continued work on making sure Nexcloud is functioning correctly 🙏) We've got our heads down on some other aspects of the codebase, but we have this on our radar and will get to it soon. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you so much @dennysubke for your app submission! Really good work :)
I have left some suggestions below:
|
||
linkstack: | ||
hostname: 'linkstack' | ||
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding a comment here makes it more clear why we are using the latest
tag here
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae' | |
# This image has no version specific tags | |
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae' | |
linkstack/docker-compose.yml
Outdated
LOG_LEVEL: 'info' | ||
PHP_MEMORY_LIMIT: '256M' | ||
UPLOAD_MAX_FILESIZE: '8M' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These values are already the default value, so we can omit them, see here.
LOG_LEVEL: 'info' | |
PHP_MEMORY_LIMIT: '256M' | |
UPLOAD_MAX_FILESIZE: '8M' |
linkstack/docker-compose.yml
Outdated
hostname: 'linkstack' | ||
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae' | ||
environment: | ||
TZ: 'Europe/Berlin' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately there is no environment variable from umbrelOS, that exposes the current timezone, so i suggest we go with the default value here (which is UTC
)
TZ: 'Europe/Berlin' |
linkstack/docker-compose.yml
Outdated
version: "3.8" | ||
|
||
services: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have tested your app submission with this app proxy and it works. Note that we can skip the proxy auth, as this app has a built-in auth mechanism.
app_proxy: | |
environment: | |
APP_HOST: linkstack_linkstack_1 | |
APP_PORT: 80 | |
PROXY_AUTH_ADD: "false" | |
linkstack/docker-compose.yml
Outdated
|
||
|
||
# apache2 config problem not solved (work in progress) | ||
|
||
#version: "3.8" | ||
|
||
#services: | ||
# app_proxy: | ||
# environment: | ||
# APP_HOST: denny-linkstack_web_1 | ||
# APP_PORT: 80 | ||
|
||
# web: | ||
# image: linkstackorg/linkstack:latest@sha256:6e7e8f44099f7c4f1340bb9ffda5411f97da766a06fd63cf1ff90c57ce22dd61 | ||
# restart: on-failure | ||
# volumes: | ||
# - ${APP_DATA_DIR}/linkstack:/htdocs | ||
# environment: | ||
# HOST: umbrel.local | ||
# TZ: Europe/Berlin | ||
# PHP_MEMORY_LIMIT: 512M | ||
# UPLOAD_MAX_FILESIZE: 8M | ||
# SERVER_ADMIN: | ||
# HTTP_SERVER_NAME: | ||
# HTTPS_SERVER_NAME: | ||
# LOG_LEVEL: 'info' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I have added the umbrelOS proxy, this can be removed
# apache2 config problem not solved (work in progress) | |
#version: "3.8" | |
#services: | |
# app_proxy: | |
# environment: | |
# APP_HOST: denny-linkstack_web_1 | |
# APP_PORT: 80 | |
# web: | |
# image: linkstackorg/linkstack:latest@sha256:6e7e8f44099f7c4f1340bb9ffda5411f97da766a06fd63cf1ff90c57ce22dd61 | |
# restart: on-failure | |
# volumes: | |
# - ${APP_DATA_DIR}/linkstack:/htdocs | |
# environment: | |
# HOST: umbrel.local | |
# TZ: Europe/Berlin | |
# PHP_MEMORY_LIMIT: 512M | |
# UPLOAD_MAX_FILESIZE: 8M | |
# SERVER_ADMIN: | |
# HTTP_SERVER_NAME: | |
# HTTPS_SERVER_NAME: | |
# LOG_LEVEL: 'info' |
port: 8190 | ||
description: >- | ||
LinkStack is a unique platform that provides an efficient solution for managing and sharing links online. Our platform offers a website similar to Linktree, which allows users to overcome the limitation of only being able to add one link on social media platforms. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One new line is missing
linkstack/umbrel-app.yml
Outdated
website: https://linkstack.org/ | ||
submitter: dennysubke | ||
submission: https://github.com/getumbrel/umbrel-apps/pull/1537 | ||
repo: https://github.com/linkstackorg/linkstack |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keep it the same as the support url. This is the original url:
repo: https://github.com/linkstackorg/linkstack | |
repo: https://github.com/LinkStackOrg/LinkStack |
linkstack/umbrel-app.yml
Outdated
releaseNotes: >- | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can be shortened to this:
releaseNotes: >- | |
releaseNotes: "" |
linkstack/umbrel-app.yml
Outdated
defaultUsername: "" | ||
defaultPassword: "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Those two are not needed
defaultUsername: "" | |
defaultPassword: "" |
|
||
services: | ||
|
||
linkstack: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding a comment indicating that this image doesn't support a custom user
linkstack: | |
linkstack: | |
# This image doesn't support a custom user | |
# user: '1000:1000' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have now implemented all suggested changes. I hope everything is correct so far.
Hey @dennysubke, just a friendly ping to remind you about @sharknoon's review above. |
Done! Thanks for the reminder. :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dennysubke please also create a folder linkstack/data
and a file called .gitkeep
inside of it. The reason is, that we get permission errors otherwise, because docker creates the data
folder for us with the wrong permissions, if we aren't creating it ourselves.
Otherwise this app looks good! Thank you for your work so far :)
volumes: | ||
linkstack_data: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As @nmfretz suggested, this is a workaround to not use named volumes, but mock them. Can you implement this and test it, if it works on your side? Thank you :)
volumes: | |
linkstack_data: | |
volumes: | |
linkstack_data: | |
driver: local | |
driver_opts: | |
o: bind | |
type: none | |
device: ${APP_DATA_DIR}/data |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done! :)
Thank you @dennysubke for your awesome submission. |
Awesome, thanks guys. @dennysubke before I do a final review/test, is this app working for you now? |
@nmfretz Just tested it again, and it's working perfectly. Thanks for all the help! 👍 |
Excellent, thanks @dennysubke. I have gone through and made some final changes (including removing unneeded environment variables) to finalize this dennysubke/umbrel-apps@71edf47...286fa6b I have tested this and everything is working well for me, including configuring Cloudflare to expose linkstack. We'll give a once-over on the icon and gallery images and then go live! |
|
Severity | File | Description |
---|---|---|
linkstack/docker-compose.yml |
Invalid image tag "latest": Images should not use the "latest" tag |
|
ℹ️ | linkstack/docker-compose.yml |
Potentially using unsafe user in service "linkstack": The default container user "root" can lead to security vulnerabilities. If you are using the root user, please try to specify a different user (e.g. "1000:1000") in the compose file or try to set the UID/PUID and GID/PGID environment variables to 1000. |
linkstack/umbrel-app.yml |
"icon" and "gallery" needs to be empty for new app submissions: The "icon" and "gallery" fields must be empty for new app submissions as it is being created by the Umbrel team. |
Legend
Symbol | Description |
---|---|
❌ | Error: This must be resolved before this PR can be merged. |
Warning: This is highly encouraged to be resolved, but is not strictly mandatory. | |
ℹ️ | Info: This is just for your information. |
Thanks again for your work on LinkStak @dennysubke! We are going live. |
@nmfretz @sharknoon Thank you for the great work and your constant efforts! Please take a look at my Umbrel Community AppStore when you get the chance: https://github.com/dennysubke/dennys-umbrel-app-store Maybe there's something there... 😎 |
App Submission
LinkStack - Self-hosted open-source Linktree alternative
...
Icon
(unfortunately only png 😔)
...
Gallery images
I have tested my app on: