Compare commits

...

24 commits

Author SHA1 Message Date
Rafael Caricio 616ae32168
Expose port for monitoring 2023-01-10 20:35:08 +01:00
Girish Ramakrishnan 5da1da9700 Give it more time 2023-01-05 12:21:57 +01:00
Johannes Zellner 7a7cea05f9 Bump version 2023-01-05 12:07:46 +01:00
Girish Ramakrishnan 9ab0ca8cf5 Update peertube to 5.0.1 2023-01-05 11:24:15 +01:00
Girish Ramakrishnan 8225196f43 Version 2.10.0 2023-01-03 18:55:03 +01:00
Girish Ramakrishnan fdbbf83b52 update base image to 4.0.0 2023-01-03 18:45:50 +01:00
Johannes Zellner b5ea4a34aa Fixup start script 2022-12-16 17:22:52 +01:00
Johannes Zellner 83dffb7e82 Update test deps 2022-12-16 15:54:30 +01:00
Johannes Zellner afae3cc99e Run v5 migration script 2022-12-16 15:53:50 +01:00
Johannes Zellner 73d4a02c4a add missing well_known data storage setting 2022-12-16 15:46:35 +01:00
Johannes Zellner e86ace516f Ensure we have an app secret set, also after update 2022-12-14 15:58:24 +01:00
Johannes Zellner 8543ac28e0 Update test deps 2022-12-13 11:31:00 +01:00
Johannes Zellner a2eba07155 Bump version 2022-12-13 11:30:41 +01:00
Girish Ramakrishnan 171606daa4 Version 2.8.1 2022-11-17 13:39:46 +01:00
Girish Ramakrishnan 7dc76ff44d scroll 2022-11-17 13:38:43 +01:00
Girish Ramakrishnan 205a2721dd Update test packages 2022-11-17 13:11:50 +01:00
Girish Ramakrishnan bd5bd4edc4 Does not support display name
instance name or originator it seems

863477173e/server/lib/emailer.ts (L138)
2022-11-17 12:44:47 +01:00
Girish Ramakrishnan 8087c7f461 Update PeerTube to 4.3.1 2022-11-17 12:43:17 +01:00
Johannes Zellner 3df343c185 Fixup tests 2022-09-21 16:55:48 +02:00
Johannes Zellner 519a2a2628 Bump version 2022-09-21 13:40:22 +02:00
Johannes Zellner 863c687e68 Update test deps 2022-06-28 15:48:47 +02:00
Johannes Zellner fe514b48af Bump version for 4.2.2 2022-06-28 15:48:03 +02:00
Johannes Zellner ab8e5cfba8 Bump version for 4.2.1 2022-06-21 15:43:02 +02:00
Girish Ramakrishnan 9ea3b065ef remove migration 2022-06-07 16:48:47 -07:00
7 changed files with 406 additions and 680 deletions

View file

@ -157,3 +157,90 @@
[2.7.0]
* Update PeerTube to 4.2.0
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v4.2.0)
[2.7.1]
* Update PeerTube to 4.2.1
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v4.2.1)
* Fix live ending job that breaks new live session
* Fix search filters counter
* Fix upload banner icon margin
* Fix button icon margin
* Fix my import expander icon that should only be displayed on import error
* Fix select components styling inconsistency
* Increase max watch section to avoid too much warnings in server
* Optimize broadcast job creation
* Optimize View activities delivery using a dedicated broadcast job queue that can be run in parallel
* Fix video selection buttons placement
* Fix searching into account blocklist
* Fix incorrect instance stats
* Fix broken player on ICE error
* Relax views federation
* Fix peertube user in docker
* Fix playlist element federation with a deleted video
[2.7.2]
* Update PeerTube to 4.2.2
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v4.2.2)
* Upgrade vulnerable server dependencies
* Fix fast restream in permanent live
* Fix latency mode setting when creating a live
* Fix unique constraint tag violation when importing videos
* Fix latest live sessions order
* Fix server crash feed when accessing feeds that contains a live
* Fix false boolean attribute (data-is-live etc) in custom markup
[2.8.0]
* Update PeerTube to 4.3.0
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v4.3.0)
* Use yt-dlp by default instead of youtube-dl for new installations (because of much more dev activity)
* Reduce amount of PeerTube error logs
* Introduce log.log_tracker_unknown_infohash setting to disable "Unknown infoHash" warnings
* Web browsers send their error logs to the server that writes them in its own logs. Can be disabled by log.accept_client_log setting
* Enable metrics export using a Prometheus exporter
* Enable tracing export using a Jaeger exporter
* Automatically rebuild native plugin modules on NodeJS ABI change
[2.8.1]
* Update PeerTube to 4.3.1
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v4.3.1)
* Prevent XSS in sort select on pages that list videos. Thanks to Anthony Roth who reported the vulnerability!
* Fix broken embed player on live reload
* Fix channel follow when manually approve instance followers is enabled
* Fix input with number overflow on small screen
* Fix moderation dropdown overflow on mobile
[2.9.0]
* Update PeerTube to 5.0.0
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v5.0.0)
* Support object storage for live streams tada
* Support Two Factor authentication (OTP) tada
* Add explanation on disk space used for user quota admin config #5305
* Display channel in my videos list
* Show which playlists videos are added to in my videos list
* Add Channels link in left menu
* Add ... after the truncated video name in miniature
* Add object storage info badge in videos admin overview
* Add links to video files in videos admin overview
* Better indicate the live ended in embed by displaying a message and the live preview
* Force live autoplay by muting the video if necessary when the user was waiting for the live
* Handle network issues in video player #5138
* Cache chunks to upload in server to resume upload later #5224
* Add ability to serve custom static files under /.well-known URL path #5214
* Use account/channel avatar in account/channel RSS feeds #5325
* Add filter to sort videos by name #5351
* Add ability to configure OpenTelemetry Prometheus exporter listening hostname
[2.10.0]
* Update base image to 4.0.0
[2.10.1]
* Update PeerTube to 5.0.1
* [Full changelog](https://github.com/Chocobozzz/PeerTube/releases/tag/v5.0.1)
* Fix HLS player infinite loading when the live stream/video ends
* Do not autoplay live without autoplay setting
* Fix private/internal video playback from Cloudflare object storage
* Fix local channel stats/OpenTelemetry metric
* Also display dropdown for videos from the homepage
* Fix broken P2P with live stream coming from object storage
* Fix responsive of table pagination

View file

@ -1,6 +1,6 @@
{
"version": "2.7.0",
"upstreamVersion": "4.2.0",
"version": "2.10.1-1",
"upstreamVersion": "5.0.1",
"id": "org.joinpeertube.cloudronapp",
"title": "PeerTube",
"author": "PeerTube developers",
@ -17,13 +17,19 @@
"description": "RTMP Port for livestreaming",
"defaultValue": 1935,
"containerPort": 1935
},
"METRICS_PORT": {
"title": "Prometheus Metrics Port",
"description": "HTTP Port for Prometheus metrics",
"defaultValue": 9091,
"containerPort": 9091
}
},
"addons": {
"localstorage": {},
"postgresql": {},
"redis": {},
"sendmail": {},
"sendmail": { "supportsDisplayName": false },
"ldap": {}
},
"memoryLimit": 536870912,
@ -35,10 +41,10 @@
"https://screenshots.cloudron.io/org.joinpeertube.cloudronapp/home.png",
"https://screenshots.cloudron.io/org.joinpeertube.cloudronapp/subscribe.png"
],
"changelog": "file://CHANGELOG",
"changelog": "file://CHANGELOG.md",
"postInstallMessage": "file://POSTINSTALL.md",
"documentationUrl": "https://docs.cloudron.io/apps/peertube/",
"minBoxVersion": "7.1.0",
"minBoxVersion": "7.2.0",
"manifestVersion": 2
}

View file

@ -1,16 +1,17 @@
FROM cloudron/base:3.2.0@sha256:ba1d566164a67c266782545ea9809dc611c4152e27686fd14060332dd88263ea
FROM cloudron/base:4.0.0@sha256:31b195ed0662bdb06a6e8a5ddbedb6f191ce92e8bee04c03fb02dd4e9d0286df
RUN mkdir -p /app/code/server /app/pkg
WORKDIR /app/code/server
# we require ffmpeg 4.4.1 - https://github.com/Chocobozzz/PeerTube/releases/tag/v4.0.0
# https://lindevs.com/install-ffmpeg-on-ubuntu/
RUN apt update && \
add-apt-repository -y ppa:savoury1/ffmpeg4 && \
apt install -y ffmpeg prosody && \
rm -rf /var/cache/apt /var/lib/apt/lists
# https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/dependencies.md
ARG NODEJS_VERSION=16.13.2
RUN mkdir -p /usr/local/node-${NODEJS_VERSION} && \
curl -L https://nodejs.org/dist/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}-linux-x64.tar.gz | tar zxf - --strip-components 1 -C /usr/local/node-${NODEJS_VERSION}
ENV PATH /usr/local/node-${NODEJS_VERSION}/bin:$PATH
ARG VERSION=4.2.0
RUN apt update && apt install -y prosody && rm -rf /var/cache/apt /var/lib/apt/lists
ARG VERSION=5.0.1
# install peertube. the chown is required for some reason for ffmpeg. it fails with EROFS without it when transcoding
RUN curl -sL https://github.com/Chocobozzz/PeerTube/releases/download/v${VERSION}/peertube-v${VERSION}.tar.xz | tar --strip-components 1 -Jxvf - && \

View file

@ -17,7 +17,6 @@ update_ldap() {
first_time_setup() {
echo "==> Starting peertube to run migrations on first run"
npm start & # be wary of https://stackoverflow.com/questions/70738567/why-does-running-npm-run-script-as-root-switch-user
peertube_pid=$!
sleep 10
while ! curl --silent --output /dev/null --fail http://localhost:9000/; do
@ -25,7 +24,8 @@ first_time_setup() {
sleep 5
done
kill -SIGTERM ${peertube_pid} # this kills the process group
killall -SIGTERM peertube # this kills the process group
sleep 5
echo "==> Reset root password"
echo "changeme" | npm run reset-password -- -u root
@ -41,6 +41,11 @@ first_time_setup() {
update_config() {
echo "==> Ensure and updating configs"
# version 5 needs this now
if [[ `yq eval '.secrets | has("peertube")' /app/data/production.yaml` != "true" ]]; then
yq eval ".secrets.peertube = \"`openssl rand -hex 32`\"" -i /app/data/production.yaml
fi
yq eval ".webserver.hostname = \"${CLOUDRON_APP_DOMAIN}\"" -i /app/data/production.yaml
# database
@ -65,7 +70,9 @@ update_config() {
yq eval ".smtp.disable_starttls = true" -i /app/data/production.yaml
yq eval ".smtp.from_address = \"${CLOUDRON_MAIL_FROM}\"" -i /app/data/production.yaml
# ensure settings which were later added
yq eval ".storage.bin = \"/app/data/storage/bin/\"" -i /app/data/production.yaml
yq eval ".storage.well_known = \"/app/data/storage/well_known/\"" -i /app/data/production.yaml
}
# cd /var/www/peertube/peertube-latest/scripts && sudo -H -u peertube ./upgrade.sh
@ -79,10 +86,12 @@ else
update_config
[[ -n "${CLOUDRON_LDAP_SERVER:-}" ]] && update_ldap
(sleep 30; echo "==> Generating avatar miniatures"; gosu cloudron:cloudron node dist/scripts/migrations/peertube-4.2.js) &
fi
# REMOVE THIS ON NEXT RELEASE
echo "=> Run migration script for v5.0"
node ./dist/scripts/migrations/peertube-5.0.js
chown -R cloudron:cloudron /app/data /run/peertube
echo "==> Starting PeerTube"

906
test/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -10,11 +10,10 @@
"license": "ISC",
"devDependencies": {
"expect.js": "^0.3.1",
"mocha": "^10.0.0"
"mocha": "^10.2.0"
},
"dependencies": {
"chromedriver": "^102.0.0",
"selenium-server-standalone-jar": "^3.141.59",
"selenium-webdriver": "^4.2.0"
"chromedriver": "^108.0.0",
"selenium-webdriver": "^4.7.1"
}
}

View file

@ -89,19 +89,12 @@ describe('Application life cycle test', function () {
async function completeSetup() {
var button;
await browser.get('https://' + app.fqdn + '/admin/config/edit-custom');
await browser.get(`https://${app.fqdn}`);
await waitForElement(By.xpath('//a[contains(text(), "Configure my instance")]'));
await browser.findElement(By.xpath('//a[contains(text(), "Configure my instance")]')).click(); // this opens a new window
await browser.get('https://' + app.fqdn + '/admin/config/edit-custom');
await waitForElement(By.xpath('//input[contains(@value, "Update configuration")]'));
button = await browser.findElement(By.xpath('//input[contains(@value, "Update configuration")]'));
await browser.executeScript('arguments[0].scrollIntoView(true)', button);
await button.click();
await waitForElement(By.xpath('//h3[contains(text(), "Success")]'));
console.log('Close the newly opened tab. Will wait for 20 seconds');
await browser.sleep(20000);
console.log('Close the newly opened tab. Will wait for 10 seconds');
await browser.sleep(10000);
}
async function uploadVideo() {
@ -109,8 +102,12 @@ describe('Application life cycle test', function () {
await browser.sleep(2000);
await browser.findElement(By.xpath('//input[@id="videofile" and @type="file"]')).sendKeys(path.resolve(__dirname, './Cloudron Test Video.mp4'));
await browser.sleep(10000); // wait for upload
await waitForElement(By.xpath('//div[@class="submit-container"]//span[text()="Publish"]'));
await browser.findElement(By.xpath('//div[@class="submit-container"]//span[text()="Publish"]')).click();
let button = browser.findElement(By.xpath('//div[@class="submit-container"]//span[text()="Publish"]'));
await browser.executeScript('arguments[0].scrollIntoView(false)', button);
await browser.sleep(2000);
await button.click();
await browser.sleep(2000);
}
@ -122,7 +119,7 @@ describe('Application life cycle test', function () {
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
it('install app', async function () {
execSync('cloudron install --location ' + LOCATION, EXEC_ARGS);
await sleep(10000); // takes a bit to create root user in background
await sleep(40000); // takes a bit to create root user in background
});
it('can get app information', getAppInfo);
@ -174,7 +171,10 @@ describe('Application life cycle test', function () {
it('can login', login.bind(null, username, password));
it('logout', logout);
it('uninstall app', function () { execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); });
it('uninstall app', async function () {
await browser.executeScript('localStorage.clear();');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
// No SSO
it('install app (no sso)', async function () {
@ -188,7 +188,10 @@ describe('Application life cycle test', function () {
it('can complete setup', completeSetup);
it('can logout', logout);
it('uninstall app (no sso)', function () { execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); });
it('uninstall app (no sso)', async function () {
await browser.executeScript('localStorage.clear();');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
// test update
it('can install app', async function () {
@ -210,5 +213,8 @@ describe('Application life cycle test', function () {
it('can login', login.bind(null, username, password));
it('logout', logout);
it('uninstall app', function () { execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); });
it('uninstall app', async function () {
await browser.executeScript('localStorage.clear();');
execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS);
});
});