Skip to content
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

Merged
merged 32 commits into from
Nov 4, 2024

Conversation

dennysubke
Copy link
Contributor

App Submission

LinkStack - Self-hosted open-source Linktree alternative

...

Icon

LinkStackLogo256x256

(unfortunately only png 😔)
...

Gallery images

WP1-MASTER

WP2-MASTER

WP3-MASTER

WP4-MASTER

WP5-MASTER

I have tested my app on:

  • umbrelOS on a Raspberry Pi
  • umbrelOS on an Umbrel Home
  • umbrelOS on Linux VM

@nmfretz
Copy link
Contributor

nmfretz commented Oct 3, 2024

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.

Copy link
Contributor

@sharknoon sharknoon left a 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'
Copy link
Contributor

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

Suggested change
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae'
# This image has no version specific tags
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae'

Comment on lines 13 to 15
LOG_LEVEL: 'info'
PHP_MEMORY_LIMIT: '256M'
UPLOAD_MAX_FILESIZE: '8M'
Copy link
Contributor

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.

Suggested change
LOG_LEVEL: 'info'
PHP_MEMORY_LIMIT: '256M'
UPLOAD_MAX_FILESIZE: '8M'

hostname: 'linkstack'
image: 'linkstackorg/linkstack:latest@sha256:abd691b4293b020a317de8794737671e0315159efcb868e8a4124d6f0611f7ae'
environment:
TZ: 'Europe/Berlin'
Copy link
Contributor

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)

Suggested change
TZ: 'Europe/Berlin'

version: "3.8"

services:

Copy link
Contributor

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.

Suggested change
app_proxy:
environment:
APP_HOST: linkstack_linkstack_1
APP_PORT: 80
PROXY_AUTH_ADD: "false"

Comment on lines 24 to 49


# 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'
Copy link
Contributor

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

Suggested change
# 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.

Copy link
Contributor

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

Suggested change

website: https://linkstack.org/
submitter: dennysubke
submission: https://github.com/getumbrel/umbrel-apps/pull/1537
repo: https://github.com/linkstackorg/linkstack
Copy link
Contributor

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:

Suggested change
repo: https://github.com/linkstackorg/linkstack
repo: https://github.com/LinkStackOrg/LinkStack

Comment on lines 44 to 45
releaseNotes: >-

Copy link
Contributor

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:

Suggested change
releaseNotes: >-
releaseNotes: ""

Comment on lines 48 to 49
defaultUsername: ""
defaultPassword: ""
Copy link
Contributor

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

Suggested change
defaultUsername: ""
defaultPassword: ""


services:

linkstack:
Copy link
Contributor

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

Suggested change
linkstack:
linkstack:
# This image doesn't support a custom user
# user: '1000:1000'

Copy link
Contributor Author

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.

@nmfretz
Copy link
Contributor

nmfretz commented Oct 24, 2024

Hey @dennysubke, just a friendly ping to remind you about @sharknoon's review above.

@dennysubke
Copy link
Contributor Author

Hey @dennysubke, just a friendly ping to remind you about @sharknoon's review above.

Done! Thanks for the reminder. :)

Copy link
Contributor

@sharknoon sharknoon left a 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 :)

Comment on lines +23 to +24
volumes:
linkstack_data:
Copy link
Contributor

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 :)

Suggested change
volumes:
linkstack_data:
volumes:
linkstack_data:
driver: local
driver_opts:
o: bind
type: none
device: ${APP_DATA_DIR}/data

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done! :)

linkstack/docker-compose.yml Outdated Show resolved Hide resolved
@sharknoon
Copy link
Contributor

Thank you @dennysubke for your awesome submission.
@nmfretz this one looks good to me

@nmfretz
Copy link
Contributor

nmfretz commented Oct 25, 2024

Awesome, thanks guys.

@dennysubke before I do a final review/test, is this app working for you now?

@dennysubke
Copy link
Contributor Author

@nmfretz Just tested it again, and it's working perfectly. Thanks for all the help! 👍

@getumbrel getumbrel deleted a comment from github-actions bot Oct 28, 2024
@nmfretz
Copy link
Contributor

nmfretz commented Oct 28, 2024

@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!

@getumbrel getumbrel deleted a comment from github-actions bot Oct 28, 2024
Copy link

github-actions bot commented Nov 4, 2024

⚠️   Linting finished with 2 warnings   ⚠️

Thank you for your submission! This is an automated linter that checks for common issues in pull requests to the Umbrel App Store.

Please review the linting results below and make any necessary changes to your submission.

Linting Results

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.

@nmfretz
Copy link
Contributor

nmfretz commented Nov 4, 2024

Thanks again for your work on LinkStak @dennysubke! We are going live.

image

@nmfretz nmfretz merged commit 1fcde88 into getumbrel:master Nov 4, 2024
1 check passed
@dennysubke
Copy link
Contributor Author

@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... 😎

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants