Skip to content
Snippets Groups Projects
Commit b5cc9e49 authored by František Dvořák's avatar František Dvořák
Browse files

EGI devel: binder

parent cb06ce53
No related branches found
No related tags found
No related merge requests found
Showing
with 1328 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="133.18167mm"
height="23.136333mm"
viewBox="0 0 133.18167 23.136333"
version="1.1"
id="svg1206"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
sodipodi:docname="egi-binder-logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1208"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.64052329"
inkscape:cx="-100.69891"
inkscape:cy="174.07642"
inkscape:window-width="1312"
inkscape:window-height="969"
inkscape:window-x="760"
inkscape:window-y="320"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs1203" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.886497,-82.320502)">
<g
id="g690"
transform="matrix(0.1160515,0,0,0.1160515,47.950486,79.544877)">
<path
fill="#999999"
d="m 165.04,37.83 c 0.699,-5.219 5.16,-9.017 10.293,-9.017 v 0 c 0.46,0 0.926,0.031 1.39,0.091 v 0 c 5.69,0.765 9.694,5.989 8.934,11.681 v 0 c -0.758,5.688 -5.995,9.686 -11.681,8.928 v 0 c -5.688,-0.759 -9.694,-5.989 -8.936,-11.683 z"
id="path602" />
<path
fill="#999999"
d="m 139.603,29.261 c 0.533,-0.08 1.061,-0.122 1.587,-0.122 v 0 c 5.044,0 9.472,3.679 10.262,8.818 v 0 c 0.87,5.681 -3.024,10.981 -8.703,11.852 v 0 c -5.672,0.87 -10.977,-3.021 -11.851,-8.698 v 0 c -0.868,-5.672 3.029,-10.981 8.705,-11.85 z"
id="path604" />
<path
fill="#999999"
d="m 104.054,40.129 c 1.431,-0.675 2.944,-0.997 4.431,-0.997 v 0 c 3.898,0 7.627,2.2 9.404,5.956 v 0 c 2.454,5.19 0.236,11.387 -4.957,13.838 v 0 c -5.189,2.453 -11.388,0.236 -13.838,-4.959 v 0 c -2.45,-5.188 -0.233,-11.387 4.96,-13.838 z"
id="path606" />
<path
fill="#999999"
d="m 229.183,60.114 c 2.055,-2.397 4.964,-3.626 7.892,-3.626 v 0 c 2.4,0 4.805,0.826 6.771,2.507 v 0 c 4.344,3.738 4.855,10.3 1.11,14.654 v 0 c -3.735,4.359 -10.301,4.859 -14.655,1.124 v 0 0 c -4.362,-3.741 -4.865,-10.305 -1.118,-14.659 z"
id="path608" />
<path
fill="#999999"
d="m 73.081,60.649 c 1.985,-1.764 4.455,-2.639 6.917,-2.639 v 0 c 2.859,0 5.709,1.173 7.758,3.477 v 0 c 3.825,4.283 3.451,10.856 -0.833,14.676 v 0 0 C 82.641,79.984 76.068,79.61 72.249,75.324 v 0 C 68.424,71.042 68.797,64.47 73.08,60.649 v 0 z"
id="path610" />
<path
fill="#999999"
d="m 253.916,83.886 c 1.746,-1.131 3.71,-1.675 5.647,-1.675 v 0 c 3.406,-0.001 6.744,1.67 8.734,4.736 v 0 0 0 c 3.114,4.821 1.751,11.253 -3.065,14.381 v 0 c -4.823,3.122 -11.255,1.753 -14.383,-3.062 v 0 0 c -3.114,-4.819 -1.749,-11.251 3.067,-14.38 z"
id="path612" />
<path
fill="#999999"
d="m 49.17,89.077 c 1.969,-3.167 5.367,-4.914 8.837,-4.914 v 0 c 1.871,0 3.771,0.51 5.48,1.569 v 0 c 4.875,3.032 6.37,9.442 3.336,14.314 v 0 c -3.032,4.877 -9.438,6.374 -14.314,3.344 v 0 C 47.634,100.358 46.138,93.946 49.17,89.074 v 0 z"
id="path614" />
<path
fill="#999999"
d="m 34.288,123.131 c 1.262,-4.621 5.453,-7.649 10.02,-7.649 v 0 c 0.907,0 1.832,0.118 2.752,0.369 v 0 c 5.536,1.515 8.792,7.235 7.277,12.776 v 0 c -1.515,5.527 -7.232,8.794 -12.769,7.27 v 0 c -5.541,-1.515 -8.796,-7.228 -7.28,-12.766 z"
id="path616" />
<path
fill="#999999"
d="m 163.404,59.558 c 0.496,-3.7 3.666,-6.393 7.292,-6.391 v 0 c 0.329,0 0.653,0.02 0.991,0.062 v 0 0 0 c 4.028,0.542 6.864,4.247 6.318,8.279 v 0 c -0.535,4.032 -4.239,6.865 -8.267,6.329 v 0 c -4.042,-0.541 -6.879,-4.247 -6.334,-8.279 z"
id="path618" />
<path
fill="#999999"
d="m 145.37,53.482 c 0.377,-0.056 0.751,-0.083 1.124,-0.083 v 0 c 3.575,-10e-4 6.715,2.607 7.271,6.251 v 0 c 0.622,4.025 -2.142,7.784 -6.165,8.4 v 0 c -4.022,0.618 -7.783,-2.146 -8.399,-6.167 v 0 c -0.618,-4.023 2.146,-7.781 6.169,-8.401 z"
id="path620" />
<path
fill="#999999"
d="m 187.281,64.146 c 1.223,-2.734 3.915,-4.352 6.729,-4.352 v 0 c 1.01,0 2.029,0.208 3.008,0.646 v 0 0 0 c 3.71,1.669 5.374,6.03 3.704,9.74 v 0 c -1.659,3.711 -6.021,5.37 -9.738,3.702 v 0 c -3.712,-1.663 -5.373,-6.023 -3.703,-9.736 z"
id="path622" />
<path
fill="#999999"
d="m 120.175,61.184 c 1.013,-0.475 2.086,-0.702 3.138,-0.702 v 0 c 2.762,0 5.412,1.557 6.668,4.221 v 0 c 1.738,3.678 0.165,8.067 -3.515,9.805 v 0 c -3.678,1.743 -8.069,0.17 -9.808,-3.509 v 0 c -1.737,-3.679 -0.164,-8.071 3.517,-9.813 v 0 c 0,-0.002 0,-0.002 0,-0.002 z"
id="path624" />
<path
fill="#999999"
d="m 208.868,75.351 c 1.454,-1.699 3.514,-2.568 5.583,-2.568 v 0 c 1.698,-0.003 3.409,0.582 4.801,1.777 v 0 0 0 c 3.088,2.646 3.439,7.299 0.791,10.389 v 0 c -2.653,3.087 -7.304,3.443 -10.387,0.79 v 0 0 c -3.088,-2.647 -3.439,-7.297 -0.788,-10.388 z"
id="path626" />
<path
fill="#999999"
d="m 98.219,75.731 c 1.407,-1.254 3.158,-1.868 4.902,-1.868 v 0 c 2.031,0 4.044,0.833 5.498,2.462 v 0 c 2.71,3.036 2.445,7.692 -0.591,10.402 v 0 c -3.038,2.71 -7.695,2.443 -10.402,-0.59 v 0 c -2.708,-3.036 -2.443,-7.695 0.593,-10.406 z"
id="path628" />
<path
fill="#999999"
d="m 226.394,92.202 c 1.237,-0.801 2.632,-1.189 4.009,-1.189 v 0 c 2.414,0 4.769,1.185 6.184,3.36 v 0 c 2.214,3.414 1.243,7.976 -2.172,10.189 v 0 c -3.412,2.216 -7.98,1.245 -10.192,-2.167 v 0 c -2.215,-3.412 -1.245,-7.977 2.171,-10.193 z"
id="path630" />
<path
fill="#999999"
d="M 81.267,95.877 C 82.666,93.634 85.07,92.4 87.535,92.4 v 0 c 1.328,0 2.668,0.36 3.878,1.111 v 0 c 3.461,2.145 4.519,6.695 2.372,10.148 v -0.004 0 c -2.15,3.457 -6.692,4.518 -10.147,2.367 v 0 C 80.18,103.877 79.124,99.336 81.267,95.877 Z"
id="path632" />
<path
fill="#999999"
d="m 70.722,120.02 c 0.895,-3.275 3.866,-5.426 7.1,-5.426 v 0 c 0.645,0 1.303,0.087 1.951,0.263 v 0 c 3.925,1.076 6.237,5.128 5.158,9.057 v 0 c -1.068,3.919 -5.127,6.233 -9.051,5.152 v 0 c -3.925,-1.072 -6.234,-5.124 -5.158,-9.046 z"
id="path634" />
<path
fill="#999999"
d="m 162.067,77.284 c 0.337,-2.466 2.439,-4.264 4.866,-4.264 v 0 c 0.219,0 0.438,0.014 0.662,0.048 v 0 c 2.688,0.358 4.579,2.828 4.215,5.518 v 0 c -0.353,2.69 -2.833,4.576 -5.524,4.215 v 0 c -2.687,-0.357 -4.571,-2.827 -4.219,-5.517 z"
id="path636" />
<path
fill="#999999"
d="m 150.046,73.235 c 0.253,-0.037 0.501,-0.055 0.75,-0.055 v 0 c 2.387,0 4.479,1.738 4.85,4.168 v 0 c 0.411,2.682 -1.43,5.186 -4.112,5.596 h 0.001 v 0 c -2.682,0.415 -5.186,-1.427 -5.602,-4.109 v 0 c -0.408,-2.682 1.432,-5.19 4.113,-5.6 z"
id="path638" />
<path
fill="#999999"
d="m 177.991,80.344 c 0.822,-1.825 2.611,-2.904 4.486,-2.904 v 0 c 0.666,0 1.355,0.142 2.012,0.437 v -0.002 0.002 -0.002 0 c 2.476,1.11 3.581,4.017 2.47,6.493 v 0 c -1.118,2.473 -4.019,3.58 -6.497,2.468 v 0 c -2.477,-1.11 -3.575,-4.02 -2.471,-6.492 z"
id="path640" />
<path
fill="#999999"
d="m 133.25,78.37 c 0.677,-0.321 1.39,-0.473 2.094,-0.473 v 0 c 1.84,0 3.604,1.044 4.443,2.818 v 0 c 1.161,2.451 0.111,5.379 -2.343,6.541 v 0 c -2.451,1.158 -5.379,0.109 -6.542,-2.342 v 0 c -1.156,-2.457 -0.106,-5.381 2.347,-6.543 v 0 h 0.001 z"
id="path642" />
<path
fill="#999999"
d="m 118.612,88.066 c 0.936,-0.833 2.103,-1.246 3.269,-1.246 v 0 c 1.352,0 2.697,0.556 3.668,1.645 v 0 c 1.802,2.021 1.626,5.13 -0.398,6.932 v 0 0 c -2.023,1.808 -5.13,1.633 -6.932,-0.393 v 0 c -1.807,-2.023 -1.633,-5.13 0.393,-6.938 z"
id="path644" />
<path
fill="#999999"
d="m 204.07,99.05 c 0.819,-0.534 1.753,-0.79 2.67,-0.79 v 0 c 1.605,0 3.185,0.785 4.127,2.235 v 0 c 1.475,2.278 0.825,5.32 -1.448,6.797 v 0 c -2.269,1.478 -5.317,0.825 -6.796,-1.448 v 0 c -1.475,-2.276 -0.821,-5.319 1.447,-6.794 z"
id="path646" />
<path
fill="#999999"
d="m 212.111,113.129 c 0.461,-0.139 0.933,-0.201 1.396,-0.201 v 0 c 2.114,0 4.072,1.384 4.704,3.526 v 0 c 0.767,2.602 -0.721,5.332 -3.325,6.099 v 0 c -2.596,0.77 -5.334,-0.717 -6.101,-3.322 v 0 c -0.766,-2.601 0.721,-5.332 3.326,-6.102 z"
id="path648" />
<path
fill="#999999"
d="m 100.277,117.596 c 0.601,-2.183 2.576,-3.62 4.736,-3.62 v 0 c 0.428,0 0.868,0.061 1.297,0.181 v 0 c 2.62,0.716 4.157,3.418 3.44,6.032 v 0 0 c -0.713,2.621 -3.42,4.158 -6.031,3.438 v 0 c -2.616,-0.716 -4.159,-3.417 -3.442,-6.031 z"
id="path650" />
<path
fill="#999999"
d="m 161.098,90.159 c 0.209,-1.565 1.559,-2.711 3.099,-2.711 v 0 c 0.132,0 0.271,0.009 0.419,0.029 v 0 c 1.713,0.226 2.902,1.799 2.686,3.508 v 0 c -0.23,1.711 -1.809,2.912 -3.518,2.684 v 0 0 c -1.713,-0.23 -2.913,-1.801 -2.686,-3.51 z"
id="path652" />
<path
fill="#999999"
d="m 153.453,87.582 c 0.16,-0.023 0.317,-0.036 0.48,-0.036 v 0 c 1.513,0 2.844,1.107 3.081,2.654 v 0 c 0.261,1.705 -0.907,3.299 -2.611,3.56 v 0 c -1.705,0.262 -3.301,-0.911 -3.564,-2.616 v 0 c -0.263,-1.701 0.908,-3.296 2.614,-3.562 z"
id="path654" />
<path
fill="#999999"
d="m 171.229,92.102 c 0.521,-1.156 1.653,-1.844 2.846,-1.844 v 0 c 0.43,0 0.868,0.091 1.287,0.281 v 0 0 0 c 1.57,0.702 2.272,2.551 1.567,4.126 v 0 c -0.708,1.573 -2.557,2.277 -4.13,1.568 h -0.003 v 0 c -1.57,-0.705 -2.272,-2.554 -1.567,-4.131 z"
id="path656" />
<path
fill="#999999"
d="m 133.46,97.019 c 0.594,-0.534 1.336,-0.795 2.077,-0.795 v 0 c 0.86,0 1.716,0.354 2.331,1.047 v 0 c 1.154,1.286 1.042,3.259 -0.25,4.411 v 0 c -1.285,1.146 -3.26,1.033 -4.411,-0.252 v 0 c -1.144,-1.289 -1.035,-3.264 0.253,-4.411 z"
id="path658" />
<path
fill="#999999"
d="m 187.817,104.002 c 0.524,-0.34 1.109,-0.501 1.691,-0.501 v 0 c 1.031,0 2.029,0.501 2.623,1.421 v 0 0 0 c 0.939,1.449 0.526,3.386 -0.92,4.323 v 0 c -1.446,0.938 -3.376,0.527 -4.317,-0.922 v 0 c -0.943,-1.446 -0.523,-3.385 0.923,-4.321 z"
id="path660" />
<path
fill="#999999"
d="m 126.275,105.558 c 0.589,-0.947 1.612,-1.474 2.656,-1.475 v 0 c 0.563,0 1.134,0.157 1.647,0.472 v 0 c 1.466,0.916 1.911,2.837 1.004,4.302 v 0 c -0.91,1.466 -2.838,1.917 -4.303,1.009 v 0 c -1.465,-0.915 -1.915,-2.843 -1.004,-4.308 z"
id="path662" />
<path
fill="#999999"
d="m 192.923,112.959 c 0.3,-0.09 0.595,-0.13 0.888,-0.13 v 0 c 1.352,0 2.596,0.88 2.992,2.24 v 0 0 0 0 c 0.49,1.655 -0.458,3.394 -2.104,3.881 v 0 c -1.658,0.488 -3.395,-0.459 -3.882,-2.112 v 0 c -0.489,-1.656 0.456,-3.393 2.106,-3.879 z"
id="path664" />
<path
fill="#999999"
d="m 121.802,115.796 c 0.381,-1.387 1.637,-2.302 3.012,-2.302 v 0 c 0.271,0 0.55,0.04 0.823,0.113 v 0 c 1.666,0.457 2.646,2.175 2.189,3.843 v 0 c -0.456,1.661 -2.177,2.641 -3.838,2.187 v 0 c -1.664,-0.458 -2.643,-2.177 -2.186,-3.841 z"
id="path666" />
<path
fill="#999999"
d="m 238.457,113.321 c 0.688,-0.206 1.39,-0.306 2.082,-0.306 v 0 c 3.182,0 6.116,2.08 7.064,5.29 v 0 0 0 c 1.155,3.901 -1.077,7.996 -4.979,9.149 v 0 c -3.905,1.145 -8,-1.083 -9.155,-4.981 v 0 0 c -1.145,-3.902 1.082,-8.003 4.988,-9.152 z"
id="path668" />
<rect
x="265.935"
y="149.649"
fill="#0067b1"
width="17.181"
height="68.734001"
id="rect670" />
<line
fill="#0067b1"
x1="109.997"
y1="184.01199"
x2="109.997"
y2="184.01199"
id="line672" />
<path
fill="#0067b1"
d="m 58.011,184.012 c 0,-4.741 3.851,-8.59 8.597,-8.59 h 51.979 c 1.214,-0.006 2.233,-0.47 3.04,-1.258 v 0 c 0.787,-0.804 1.25,-1.829 1.255,-3.041 v 0 c -0.004,-1.217 -0.468,-2.234 -1.255,-3.036 v 0 c -0.807,-0.788 -1.826,-1.252 -3.04,-1.258 v 0 H 68.321 c -4.753,0.004 -8.982,1.909 -12.107,5.023 v 0 c -3.12,3.137 -5.021,7.387 -5.031,12.159 v 0 c 0.01,4.782 1.912,9.021 5.031,12.159 v 0 c 3.125,3.126 7.354,5.019 12.107,5.021 v 0 h 71.793 v 0 17.192 H 68.321 c -0.005,0 -0.006,0 -0.013,0 v 0 c -9.452,0 -18.082,-3.871 -24.261,-10.077 v 0 C 37.852,202.111 33.998,193.471 34.004,184.011 v 0 c -0.006,-9.461 3.848,-18.1 10.043,-24.292 v 0 c 6.184,-6.214 14.816,-10.074 24.273,-10.07 h 50.265 c 5.903,-0.004 11.333,2.407 15.186,6.284 v 0 c 3.877,3.862 6.297,9.286 6.294,15.189 v 0 c 0.003,5.912 -2.417,11.334 -6.294,15.196 v 0 c -3.853,3.861 -9.273,6.282 -15.174,6.282 H 66.608 v 0 c -4.746,0.002 -8.597,-3.837 -8.597,-8.588 z"
id="path674" />
<path
fill="#0067b1"
d="m 173.391,184.012 c 0,4.751 3.839,8.59 8.591,8.59 l 51.973,0.002 c 1.21,0.004 2.243,0.468 3.042,1.258 v 0 c 0.788,0.81 1.254,1.826 1.254,3.041 v 0 c 0,1.213 -0.466,2.231 -1.254,3.033 v 0 c -0.799,0.793 -1.832,1.254 -3.042,1.256 v 0 h -50.261 c -4.762,-0.002 -8.982,-1.895 -12.114,-5.021 v 0 c -3.109,-3.137 -5.017,-7.375 -5.02,-12.159 v 0 c 0.003,-4.772 1.91,-9.021 5.02,-12.159 v 0 c 3.132,-3.114 7.353,-5.018 12.114,-5.021 v 0 h 71.786 v -0.002 -17.18 h -71.786 c -0.006,0 -0.006,0 -0.016,0 v 0 c -9.45,0 -18.079,3.861 -24.255,10.068 v 0 c -6.205,6.194 -10.052,14.835 -10.049,24.294 v 0 c -0.003,9.46 3.844,18.1 10.049,24.295 v 0 c 6.18,6.21 14.814,10.081 24.271,10.077 h 50.261 c 5.913,0.004 11.336,-2.418 15.197,-6.296 v 0 c 3.864,-3.861 6.287,-9.284 6.281,-15.186 v 0 c 0.006,-5.902 -2.417,-11.324 -6.281,-15.187 v 0 c -3.861,-3.873 -9.275,-6.294 -15.184,-6.294 h -51.986 v 0 c -4.753,0.001 -8.591,3.85 -8.591,8.591 z"
id="path676" />
<path
fill="#0067b1"
d="m 283.916,122.026 c 0,5.746 -4.654,10.403 -10.402,10.403 -5.736,0 -10.391,-4.657 -10.391,-10.403 0,-5.74 4.654,-10.396 10.391,-10.396 5.748,-10e-4 10.402,4.656 10.402,10.396 z"
id="path678" />
<path
fill="#999999"
d="m 218.612,48.555 c 0,5.747 -4.654,10.402 -10.402,10.402 -5.736,0 -10.391,-4.656 -10.391,-10.402 0,-5.74 4.654,-10.396 10.391,-10.396 5.748,0 10.402,4.656 10.402,10.396 z"
id="path680" />
<circle
fill="#999999"
cx="196.104"
cy="91.010002"
r="4.9060001"
id="circle682" />
<circle
fill="#999999"
cx="111.483"
cy="104.092"
r="4.9060001"
id="circle684" />
<circle
fill="#999999"
cx="182.75101"
cy="98.890999"
r="3.1259999"
id="circle686" />
<circle
fill="#999999"
cx="144.103"
cy="93.674004"
r="3.1259999"
id="circle688" />
</g>
<switch
id="switch1196"
transform="matrix(0.51790051,0,0,0.51790051,84.950238,76.684273)">
<g
id="g1194">
<g
id="g1182">
<path
fill="#545454"
d="M 50.751,48.727 V 12.472 h 7.251 v 17.547 c 1.885,-2.32 4.544,-3.094 7.299,-3.094 6.042,0 10.586,5.269 10.586,11.167 0,5.898 -4.543,11.118 -10.585,11.118 -2.755,0 -5.849,-0.87 -7.299,-3.046 v 2.562 h -7.252 z m 12.327,-5.318 c 2.9,0 5.076,-2.514 5.076,-5.317 0,-2.803 -2.175,-5.317 -5.076,-5.317 -2.901,0 -5.076,2.514 -5.076,5.317 0,2.803 2.176,5.317 5.076,5.317 z"
id="path1170" />
<path
fill="#545454"
d="m 84.35,15.855 c 2.32,0 4.254,1.885 4.254,4.254 0,2.32 -1.934,4.254 -4.254,4.254 -2.369,0 -4.254,-1.934 -4.254,-4.254 0,-2.368 1.885,-4.254 4.254,-4.254 z M 80.724,48.727 V 27.409 h 7.251 v 21.318 z"
id="path1172" />
<path
fill="#545454"
d="m 115.819,48.727 h -7.25 V 36.642 c 0,-2.514 -0.967,-3.867 -3.239,-3.867 -2.272,0 -4.061,2.417 -4.061,5.317 V 48.727 H 94.018 V 27.409 h 7.251 v 2.61 c 1.45,-1.837 3.722,-3.094 6.526,-3.094 5.704,0 8.024,3.916 8.024,9.716 z"
id="path1174" />
<path
fill="#545454"
d="m 144.826,48.727 h -7.251 v -2.562 c -1.45,2.176 -4.592,3.046 -7.299,3.046 -6.043,0 -10.587,-5.221 -10.587,-11.118 0,-5.897 4.544,-11.167 10.587,-11.167 2.707,0 5.414,0.773 7.299,3.094 V 12.472 h 7.251 z M 132.499,32.774 c -2.9,0 -5.075,2.514 -5.075,5.317 0,2.803 2.175,5.317 5.075,5.317 2.9,0 5.076,-2.514 5.076,-5.317 0,-2.803 -2.176,-5.317 -5.076,-5.317 z"
id="path1176" />
<path
fill="#545454"
d="m 173.639,38.962 h -16.532 c 0,2.466 1.74,5.075 4.592,5.075 2.562,0 4.158,-1.691 4.206,-3.238 h 7.396 c -1.256,5.607 -5.801,8.411 -11.456,8.411 -7.348,0 -12.423,-4.351 -12.423,-11.118 0,-6.671 5.269,-11.167 12.423,-11.167 6.478,0 11.843,3.867 11.843,10.683 -10e-4,0.435 -0.049,0.919 -0.049,1.354 z m -6.913,-3.432 c 0,0 -0.338,-3.964 -4.736,-3.964 -4.545,0 -4.786,3.964 -4.786,3.964 z"
id="path1178" />
<path
fill="#545454"
d="m 185.532,38.092 v 10.635 h -7.251 V 27.409 h 7.251 v 2.61 c 1.111,-1.595 2.949,-3.094 5.607,-3.094 0.629,0 1.596,0.193 2.176,0.483 v 6.574 h -0.098 c -0.725,-0.87 -1.788,-1.208 -2.9,-1.208 -2.707,0 -4.785,2.756 -4.785,5.318 z"
id="path1180" />
</g>
<circle
fill="none"
stroke="#f5a252"
stroke-width="4.8342"
stroke-miterlimit="10"
cx="27.879"
cy="23.938999"
r="9.5419998"
id="circle1184" />
<circle
fill="none"
stroke="#579aca"
stroke-width="4.8342"
stroke-miterlimit="10"
cx="27.879"
cy="42.499001"
r="9.5430002"
id="circle1186" />
<circle
fill="none"
stroke="#e66581"
stroke-width="4.8342"
stroke-miterlimit="10"
cx="18.551001"
cy="33.289001"
r="9.5430002"
id="circle1188" />
<path
fill="none"
stroke="#579aca"
stroke-width="4.8342"
stroke-miterlimit="10"
d="m 20.196,36.836 c 0.759,-1.031 1.74,-1.927 2.921,-2.607 4.566,-2.63 10.401,-1.06 13.031,3.507"
id="path1190" />
<path
fill="none"
stroke="#f5a252"
stroke-width="4.8342"
stroke-miterlimit="10"
d="M 19.61,28.701 C 16.98,24.135 18.549,18.3 23.117,15.669 c 4.567,-2.63 10.401,-1.059 13.031,3.508"
id="path1192" />
</g>
</switch>
</g>
</svg>
<!-- htmlhint doctype-first:false -->
{% extends "templates/page.html" %}
{% block meta_social %}
{# Social media previews #}
<meta property="og:title" content="EGI Replay">
<meta property="og:image" content="https://replay.egi-test.civ.zcu.cz/hub/hub/static/images/egi-icon-replay.svg">
<meta property="og:description" content="Reproducible, sharable, open, interactive computing environments.">
<meta property="og:image:width" content="1334">
<meta property="og:image:height" content="700">
<meta property="og:image:alt" content="EGI Replay service logo" />
<meta name="twitter:card" content="summary_large_image">
{% endblock meta_social %}
{% block logo_image %}"{{ EXTRA_STATIC_URL_PREFIX }}egi-binder-logo.svg"{% endblock logo_image %}
<!-- Remove the footer part -->
{% block footer %}{% endblock footer %}
<?xml version="1.0" encoding="UTF-8"?><svg id="Laag_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 43.76 62.52"><defs><style>.cls-1{stroke:#ff7f00;}.cls-1,.cls-2{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px;}.cls-2{stroke:#0062ab;}</style></defs><g id="Laag_1-2"><g><rect class="cls-2" x="-7.88" y="10.88" width="59.52" height="40.76" rx="2.98" ry="2.98" transform="translate(-9.38 53.14) rotate(-90)"/><g><circle class="cls-2" cx="21.88" cy="44.4" r="8.08"/><path class="cls-1" d="M19.75,29.13c1.09,1.39,3.18,1.39,4.27,0,2.39-3.05,5.95-8.06,5.95-11.02,0-4.46-3.62-8.08-8.08-8.08s-8.08,3.62-8.08,8.08c0,2.96,3.55,7.98,5.95,11.02Z"/></g></g></g></svg>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Privacy policy</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
rel="stylesheet"
href="/hub/static/css/style.min.css"
type="text/css"
/>
<link rel="stylesheet" href="/policies/style.css" type="text/css" />
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<span id="jupyterhub-logo" class="pull-left">
<a href="/hub/"
><img
src="/hub/logo"
alt="JupyterHub"
class="jpy-logo"
title="Home"
/></a>
</span>
</div>
<div class="collapse navbar-collapse" id="thenavbar">
<ul class="nav navbar-nav navbar-right">
<li>
<span id="user-guide">
<a
role="button"
class="navbar-btn btn-sm btn btn-egi"
href="https://docs.egi.eu/users/dev-env/replay/"
>
<i aria-hidden="true" class="fa fa-book"></i> User Guide</a
>
</span>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<h1>Privacy Notice</h1>
<table class="table">
<tbody>
<tr>
<th>Name of the Service</th>
<td>Replay</td>
</tr>
<tr>
<th>Description of the Service</th>
<td>
<p>
The EGI Replay service (hereinafter referred to as: “the
service” or “Replay”) allows reproducing and sharing custom
computing environments for replicating the execution of analysis
in a notebooks-based platform.
</p>
<p>
This privacy notice describes how we, the EGI Foundation
(hereinafter referred to as "we" or "the Data Controller"),
collect and process data by which you can be personally
identified ("Personal Data") when you use the service.
</p>
</td>
</tr>
<tr>
<th>Data controller</th>
<td>
<address class="vcard">
<span class="fn org">EGI Foundation</span>
<span class="street-address">Science Park 140</span>
<span class="postal-code">1098 XG</span>
<span class="locality">Amsterdam</span>
<span class="country-name">Netherlands</span>
</address>
</td>
</tr>
<tr>
<th>Data Protection Officer</th>
<td>
<address class="vcard">
<span class="fn org"
>EGI Foundation Data Protection Officer</span
>
<span class="street-address">Science Park 140</span>
<span class="postal-code">1098 XG</span>
<span class="locality">Amsterdam</span>
<span class="country-name">Netherlands</span>
<span class="email"
>E-mail: <a href="mailto:dpo@egi.eu">dpo@egi.eu</a></span
>
</address>
</td>
</tr>
<tr>
<th>Jurisdiction and supervisory authority</th>
<td>
<p>Jurisdiction: NL, Netherlands</p>
<p>
EGI Foundation's lead supervisory authority is the Dutch Data
Protection Authority. They can be contacted at
<a
href="https://autoriteitpersoonsgegevens.nl/en/contact-dutch-dpa/contact-us"
>https://autoriteitpersoonsgegevens.nl/en/contact-dutch-dpa/contact-us</a
>
</p>
</td>
</tr>
<tr>
<th>Personal data processed</th>
<td>
<p>
In addition to any personal data incorporated in notebooks
managed by end users using the Replay service, the following
categories of personal data may be processed by the EGI
Foundation as part of providing the aforementioned service:
</p>
<strong>Identification data:</strong>
<ul>
<li>Identification number</li>
<li>E-mail address</li>
<li>Affiliation</li>
<li>IP address</li>
</ul>
<strong>Behavioural data:</strong>
<ul>
<li>Usage data</li>
<li>Technical logs with timestamps</li>
</ul>
<strong>Data allowing conclusions on the personality:</strong>
<ul>
<li>Membership information on roles, groups and communities</li>
</ul>
</td>
</tr>
<tr>
<th>Purpose of the processing of personal data</th>
<td>
<p>
The purpose of the collection, processing and use of the
personal data mentioned above is:
</p>
<ul>
<li>
To provide the service functions, i.e. users to manage their
notebooks on the resources they can access and allowing
administrators to manage the service and the user groups.
</li>
<li>
Identify the users or the administrators accessing the service
and track usage of resources for accounting, security
management and maintaining service stability and performance.
</li>
</ul>
</td>
</tr>
<tr>
<th>Legal basis</th>
<td>
The legal basis for processing personal data is: Legitimate
interests pursued by the controller or by a third party according
to Art. 6 (1) (f) GDPR.
</td>
</tr>
<tr>
<th>Third parties to whom personal data is disclosed</th>
<td>
<p>
Personal data will not be used beyond the original purpose of
their acquisition. If a forwarding to third parties should be
necessary to answer an inquiry or to carry out a service, the
consent of the data subject is considered to have been given
when using the respective function or service. In particular,
the data you provide to us will not be used for marketing.
</p>
<p>
For the purpose given in this privacy policy, personal data may
be passed to the following third parties:
</p>
<strong> Within the EU / EEA: </strong>
<ul>
<li>
CESNET (resource provider, service administrator,
sub-contracted data processor)
</li>
<li>
Suppliers supporting the customer: Provision of cloud
resources: a comprehensive list of providers contributing to
the federation's cloud resources can be found here:
<a href="https://www.egi.eu/federation/egi-federated-cloud/"
>https://www.egi.eu/federation/egi-federated-cloud/</a
>
</li>
<li>
The records of your use and technical log files produced by
the Service components may be shared, via secured mechanisms,
for security incident response purposes with other authorised
participants in the academic and research distributed digital
infrastructures authorised by EGI Foundation governance, only
for the same purposes and only as far as necessary to provide
the incident response capability where doing so is likely to
assist in the investigation of suspected misuse of
Infrastructure resources.
</li>
</ul>
<strong> Outside the EU / EEA: </strong>
<ul>
<li>
Suppliers supporting the customer: Provision of cloud
resources: a comprehensive list of providers contributing to
the federation's cloud resources can be found here:
<a href="https://www.egi.eu/federation/egi-federated-cloud/"
>https://www.egi.eu/federation/egi-federated-cloud/</a
>
</li>
</ul>
<p>
Any data transfer to a third country outside the EU or the EEA
only takes place under the conditions contained in Chapter V of
the GDPR and in compliance with the provisions of this privacy
policy and any related policies adopted by the EGI Federation.
</p>
</td>
</tr>
<tr>
<th>Your rights</th>
<td>
<p>
You can exercise the following rights at any time by contacting
our data protection officer using the contact details provided
in the Data Protection Officer section:
</p>
<ul>
<li>
Information about your data stored with us and their
processing
</li>
<li>Correction of incorrect personal data</li>
<li>Deletion of your data stored by us</li>
<li>
Restriction of data processing, if we are not yet allowed to
delete your data due to legal obligations
</li>
<li>Objection to the processing of your data by us</li>
<li>Data portability</li>
</ul>
<p>
You can complain at any time to the supervisory data protection
authority (DPA) responsible for you. Your responsible DPA
depends on your country and state of residence, of your
workplace or of the presumed violation. A list of the
supervisory authorities with addresses can be found at
<a href="https://edpb.europa.eu/about-edpb/board/members_en"
>https://edpb.europa.eu/about-edpb/board/members_en</a
>.
</p>
<p>
You can contact EGI Foundation's lead supervising authority
using the contact details provided in the Jurisdiction and
Supervisory Authority section.
</p>
</td>
</tr>
<tr>
<th>Data retention and deletion</th>
<td>
The records of your use and technical log files produced by the
service components will be deleted or anonymised after, at most,
18 months.
</td>
</tr>
<tr>
<th>Security</th>
<td>
<p>
We take appropriate technical and organisational measures to
ensure data security and the protection against accidental or
unlawful destruction, accidental loss, alteration, unauthorised
disclosure or access.
</p>
<p>
A comprehensive overview of the technical and organisational
measures taken by EGI Foundation can be found at
<a
href="https://documents.egi.eu/public/ShowDocument?docid=3737"
>EGI Documentation Database</a
>.
</p>
</td>
</tr>
<tr>
<th>Data Protection Code of Conduct</th>
<td>
<p>
EGI Foundation is conforming to GEANT Code of Conduct and your
personal data will be processed in accordance with the
<a
href="http://www.geant.net/uri/dataprotection-code-of-conduct/v1"
>Code of Conduct for Service Providers</a
>
and the
<a
href="https://documents.egi.eu/public/ShowDocument?docid=2732"
>EGI-doc-2732-v3: Policy on the Processing of Personal
Data.</a
>
</p>
</td>
</tr>
<tr>
<th>Acknowledgement</th>
<td>
This privacy notice is based on the
<a href="https://aarc-project.eu/policies/policy-development-kit/"
>AARC Policy development kit</a
>
(licensed under
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"
>CC BY-NC-SA 4.0</a
>)
</td>
</tr>
</tbody>
</table>
</div>
<footer class="footer">
<div class="container text-center">
<a href="/policies/privacy-policy.html">Privacy Notice</a> |
<a href="/policies/terms-of-use.html">Terms of Use</a>
</div>
</footer>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Terms of Use</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
rel="stylesheet"
href="/hub/static/css/style.min.css"
type="text/css"
/>
<link rel="stylesheet" href="/policies/style.css" type="text/css" />
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<span id="jupyterhub-logo" class="pull-left">
<a href="/hub/"
><img
src="/hub/logo"
alt="JupyterHub"
class="jpy-logo"
title="Home"
/></a>
</span>
</div>
<div class="collapse navbar-collapse" id="thenavbar">
<ul class="nav navbar-nav navbar-right">
<li>
<span id="user-guide">
<a
role="button"
class="navbar-btn btn-sm btn btn-egi"
href="https://docs.egi.eu/users/dev-env/replay/"
>
<i aria-hidden="true" class="fa fa-book"></i> User Guide</a
>
</span>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<h1>EGI Replay Acceptable Use Policy and Conditions of Use (AUP)</h1>
<p>
This Acceptable Use Policy and Conditions of Use ("AUP") defines the
rules and conditions that govern your access to and use (including
transmission, processing, and storage of data) of the resources and
services ("Services") as granted by the EGI Federation, and the Virtual
Organisation to which you belong, for the purpose of meeting the goals
of EGI, namely to deliver advanced computing services to support
researchers, multinational projects and research infrastructures, and
the goals of your Virtual Organisation or Research Community.
</p>
<ol>
<li>
You shall only use the Services in a manner consistent with the
purposes and limitations described above; you shall show consideration
towards other users including by not causing harm to the Services; you
have an obligation to collaborate in the resolution of issues arising
from your use of the Services.
</li>
<li>
You shall only use the Services for lawful purposes and not breach,
attempt to breach, nor circumvent administrative or security controls.
</li>
<li>
You shall respect intellectual property and confidentiality
agreements.
</li>
<li>
You shall protect your access credentials (e.g. passwords, private
keys or multi-factor tokens); no intentional sharing is permitted.
</li>
<li>
You shall keep your registered information correct and up to date.
</li>
<li>
You shall promptly report known or suspected security breaches,
credential compromise, or misuse to the security contact stated below;
and report any compromised credentials to the relevant issuing
authorities.
</li>
<li>
Reliance on the Services shall only be to the extent specified by any
applicable service level agreements listed below. Use without such
agreements is at your own risk.
</li>
<li>
Your personal data will be processed in accordance with the privacy
statements referenced below.
</li>
<li>
Your use of the Services may be restricted or suspended, for
administrative, operational, or security reasons, without prior notice
and without compensation.
</li>
<li>
If you violate these rules, you may be liable for the consequences,
which may include your account being suspended and a report being made
to your home organisation or to law enforcement.
</li>
</ol>
<p>
The administrative contact for this AUP is:
<a href="mailto:operations@egi.eu">operations@egi.eu</a><br />
The security contact for this AUP is:
<a href="mailto:abuse@egi.eu">abuse@egi.eu</a><br />
The Privacy Notice is located at
<a href="/policies/privacy-policy.html">Privacy Notice</a><br />
</p>
</div>
<footer class="footer">
<div class="container text-center">
<a href="/policies/privacy-policy.html">Privacy Notice</a> |
<a href="/policies/terms-of-use.html">Terms of Use</a>
</div>
</footer>
</body>
</html>
/* Minimal extra styles for policy files */
html {
position: relative;
min-height: 100%;
}
body {
margin-bottom: 60px; /* Margin bottom by footer height */
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
height: 60px; /* Set the fixed height of the footer here */
}
address {
white-space: pre-line;
}
*/2 * * * * root test -d /var/run/dind/docker.sock && rm -rfv /var/run/dind/docker.sock
*/2 * * * * root test -d /var/run/pink/podman.sock && rm -rfv /var/run/pink/podman.sock
...@@ -19,6 +19,7 @@ all: ...@@ -19,6 +19,7 @@ all:
site_name: egi-devel site_name: egi-devel
vault_mount_point: secrets/users/e1662e20-e34b-468c-b0ce-d899bc878364@egi.eu/egi-devel vault_mount_point: secrets/users/e1662e20-e34b-468c-b0ce-d899bc878364@egi.eu/egi-devel
binder_hostname: binder-dev.egi.zcu.cz
notebooks_hostname: notebooks-dev.egi.zcu.cz notebooks_hostname: notebooks-dev.egi.zcu.cz
grafana_hostname: grafana.notebooks-dev.egi.zcu.cz grafana_hostname: grafana.notebooks-dev.egi.zcu.cz
nexus_hostname: nexus.notebooks-dev.egi.zcu.cz nexus_hostname: nexus.notebooks-dev.egi.zcu.cz
......
---
- name: Binder deployment
hosts: master
become: true
vars:
nexus_secrets: "{{ lookup('community.hashi_vault.hashi_vault', (vault_mount_point, 'nexus') | join('/'), token_validate=false) }}"
secrets: "{{ lookup('community.hashi_vault.hashi_vault', (vault_mount_point, 'binder') | join('/'), token_validate=false) }}"
tasks:
- name: Debug Repository Secrets
debug:
msg: "{{ item.key }} = {{ item.value }}"
loop: "{{ nexus_secrets | dict2items }}"
- name: Debug Binder Secrets
debug:
msg: "{{ item.key }} = {{ item.value }}"
loop: "{{ secrets | dict2items }}"
- name: Configure jupyterhub helm repo
shell: |-
helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
helm repo update
changed_when: true
when: "'jupyterhub' not in ansible_local.helm_repos | map(attribute='name') | list"
- name: Configure secrets management for the binder
vars:
name: binder
shell: |-
kubectl create ns {{ name }} 2>/dev/null || true
kubectl apply -f - << EOF
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hub-secrets
namespace: {{ name }}
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["secrets"]
verbs: ["get", "watch", "list", "create", "delete", "patch", "update"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: hub-secrets
namespace: {{ name }}
subjects:
- kind: ServiceAccount
name: hub
namespace: {{ name }}
roleRef:
kind: Role
name: hub-secrets
apiGroup: rbac.authorization.k8s.io
EOF
environment:
KUBECONFIG: /etc/kubernetes/admin.conf
PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
changed_when: true
when: true
- name: Configure EGI binder customisations
vars:
name: binder
shell: |-
kubectl apply -f - << EOF
---
apiVersion: v1
kind: ConfigMap
metadata:
name: egi-binder-templates
namespace: {{ name }}
data:
page.html: >
{{ lookup('file', 'files/egi-binder-page.html') | indent(width=10) }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: egi-binder-static
namespace: {{ name }}
data:
egi-binder-logo.svg: >
{{ lookup('file', 'files/egi-binder-logo.svg') | indent(width=10) }}
EOF
environment:
KUBECONFIG: /etc/kubernetes/admin.conf
PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
changed_when: true
when: true
- name: Copy binder config file to master
template:
src: templates/binder.yaml
dest: /tmp/binder.yaml
mode: 0600
- name: Binder
vars:
# https://jupyterhub.github.io/helm-chart/#development-releases-binderhub
# see also https://github.com/jupyterhub/binderhub/blob/master/helm-chart/binderhub/Chart.yaml for compatibility with jupyterhub
# EGI production version
# version: 1.0.0-0.dev.git.2874.h2811d52 # 2022-11-25 (2.0.0)
# version: 1.0.0-0.dev.git.3500.hf2f1272 # 2024-08-01 (older)
# version: 1.0.0-0.dev.git.3550.ha957bf05 # 2025-01-03 can't launch (fixed)
version: 1.0.0-0.dev.git.3553.h57e3b3ae # 2025-01-03 can't launch (fixed)
# version: 1.0.0-0.dev.git.3653.hb72cd888 # 2025-01-03 no GUI
# version: 1.0.0-0.dev.git.3667.h65f807c1 # 2025-01-15 no GUI
# version: 1.0.0-0.dev.git.3680.he8e336dd # 2025-01-30 no GUI
# version: 1.0.0-0.dev.git.3709.h61bbc623 # 2025-03-13 no GUI
# version: 1.0.0-0.dev.git.3714.h1a177a35 # 2025-03-13 no GUI
shell: |-
helm status --namespace binder binder
if [ $? -ne 0 ]; then
helm install binder jupyterhub/binderhub --version={{ version }} --namespace=binder -f /tmp/binder.yaml
else
helm upgrade binder jupyterhub/binderhub --version={{ version }} --namespace=binder -f /tmp/binder.yaml
fi
environment:
KUBECONFIG: /etc/kubernetes/admin.conf
PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
changed_when: true
when: true
- name: Create policy files
vars:
# binder_config: templates/binder.yaml
namespace: binder
ingress_hostname: "{{ binder_hostname }}"
shell: |-
kubectl apply -f - << EOF
---
kind: ConfigMap
apiVersion: v1
metadata:
name: policies
namespace: {{ namespace }}
data:
privacy-policy.html: >
{{ lookup('file', 'files/egi-replay-privacy-policy.html') | indent(width=10) }}
terms-of-use.html: >
{{ lookup('file', 'files/egi-replay-terms-of-use.html') | indent(width=10) }}
style.css: >
{{ lookup('file', 'files/egi-style.css') | indent(width=10) }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: policies
namespace: {{ namespace }}
spec:
selector:
matchLabels:
app: policies
replicas: 1
template:
metadata:
labels:
app: policies
spec:
containers:
- name: nginx
image: nginx:1.27.4
ports:
- containerPort: 80
volumeMounts:
- name: config
mountPath: /usr/share/nginx/html/policies
volumes:
- name: config
configMap:
name: policies
---
apiVersion: v1
kind: Service
metadata:
namespace: {{ namespace }}
name: policies
labels:
app: policies
spec:
ports:
- name: http
port: 80
protocol: TCP
selector:
app: policies
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
labels:
component: ingress
name: policies
namespace: {{ namespace }}
spec:
rules:
- host: {{ ingress_hostname }}
http:
paths:
- backend:
service:
name: policies
port:
name: http
path: /policies
pathType: Prefix
EOF
environment:
KUBECONFIG: /etc/kubernetes/admin.conf
PATH: /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
when: true
- name: Workaround for binder socket and bind-mount race-condition
hosts: nfs, ingress, worker, gpu
become: true
tasks:
- name: Binder socket cleaner - dind
copy:
src: files/etc/cron.d/binder-socket-cleaner-dind
dest: /etc/cron.d/binder-socket-cleaner-dind
mode: 0640
- name: Binder socket cleaner - pink
copy:
src: files/etc/cron.d/binder-socket-cleaner-pink
dest: /etc/cron.d/binder-socket-cleaner-pink
mode: 0640
../../../common/playbooks/files/egi-binder-logo.svg
\ No newline at end of file
../../../common/playbooks/files/egi-binder-page.html
\ No newline at end of file
../../../common/playbooks/files/egi-icon-replay.svg
\ No newline at end of file
../../../common/playbooks/files/egi-replay-privacy-policy.html
\ No newline at end of file
../../../common/playbooks/files/egi-replay-terms-of-use.html
\ No newline at end of file
../../../common/playbooks/files/egi-style.css
\ No newline at end of file
---
# Secrets in "/nexus":
#
# * binder: user password for Jupyter Binder
#
# (also the "binder" user must exist in Nexus, see templates/nexus/user-*.yaml)
#
config:
BinderHub:
auth_enabled: true
hub_url: "https://{{ binder_hostname }}/hub"
use_registry: true
image_prefix: {{ registry_binder_hostname }}/{{site_name}}/binder-
# build_image: quay.io/jupyterhub/repo2docker:2024.07.0
build_token_secret: "{{ secrets['build_token_secret'] }}"
extraVolumes:
- name: egi-binder-templates
configMap:
name: egi-binder-templates
- name: egi-binder-static
configMap:
name: egi-binder-static
extraVolumeMounts:
- name: egi-binder-templates
mountPath: /etc/egi/templates
- name: egi-binder-static
mountPath: /etc/egi/static
imageBuilderType: pink
# imageBuilderType: dind
# dind:
# daemonset:
# extraArgs:
# - --mtu=1376
# # share space with system docker volume
# hostLibDir: /var/lib/docker/dind
pink:
daemonset:
image:
name: quay.io/podman/stable
tag: v5.4.1
hostStorageDir: /var/lib/docker/pink-binder
hostSocketDir: /var/run/pink/binder
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
hosts:
- {{ binder_hostname }}
tls:
- hosts:
- {{ binder_hostname }}
secretName: acme-tls-binder
service:
type: NodePort
jupyterhub:
hub:
loadRoles:
user:
scopes:
- self
- "access:services!service=binder"
baseUrl: "/hub"
services:
binder:
admin: true
oauth_redirect_uri: "https://{{ binder_hostname }}/oauth_callback"
oauth_client_id: "service-binder"
oauth_no_confirm: true
image:
name: eginotebooks/hub
tag: "sha-aef23d2"
config:
Authenticator:
enable_auth_state: true
# keep in sync with cesnet/deployments/hub.yaml
allowed_groups:
- urn:mace:egi.eu:group:auger:role=member#aai.egi.eu
- urn:mace:egi.eu:group:biomed:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.cessda.eduteams.org:role=member#aai.egi.eu
- urn:mace:egi.eu:group:eiscat.se:Hub:role=member#aai.egi.eu
- urn:mace:egi.eu:group:eval.c-scale.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.environmental.egi.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.lethe-project.eu:lethe-notebooks:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.panosc.eu:role=vm_operator#aai.egi.eu
- urn:mace:egi.eu:group:vo.reliance-project.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.access.egi.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.notebooks.egi.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.bioexcel.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:group:vo.egu2024.egi.eu:role=member#aai.egi.eu
- urn:mace:egi.eu:www.egi.eu:fedcloud-users:member@egi.eu
- urn:mace:egi.eu:www.egi.eu:techsolutions:member@egi.eu
# changed 2022-10
- urn:mace:egi.eu:group:fedcloud-users#sso.egi.eu
- urn:mace:egi.eu:group:supplier-notebooks#sso.egi.eu
- urn:mace:egi.eu:group:techsolutions#sso.egi.eu
- urn:mace:egi.eu:group:notebooks-support#sso.egi.eu
# changed 2025-03
- urn:egi.eu:group:supplier-notebooks
- urn:egi.eu:group:notebooks-support
- urn:egi.eu:group:fedcloud-users
- urn:egi.eu:group:egi-ace-all
claim_groups_key: "eduperson_entitlement"
CryptKeeper:
keys:
- "ad1b7c99b6a00a853bb42448b5205a94d8064f1b0bb5486906b52be2fd4fe5f4"
EGICheckinAuthenticator:
checkin_host: "{{ secrets['checkin_host'] }}"
authorize_url: "https://{{ secrets['checkin_host'] }}/auth/realms/egi/protocol/openid-connect/auth"
token_url: "https://{{ secrets['checkin_host'] }}/auth/realms/egi/protocol/openid-connect/token"
userdata_url: "https://{{ secrets['checkin_host'] }}/auth/realms/egi/protocol/openid-connect/userinfo"
client_id: "{{ secrets['client_id'] }}"
client_secret: "{{ secrets['client_secret'] }}"
oauth_callback_url: "https://{{ binder_hostname }}/hub/oauth_callback"
scope: ["openid", "profile", "email", "offline_access", "eduperson_scoped_affiliation", "eduperson_entitlement"]
# username_key: "preferred_username"
username_key: "sub"
OnedataSpawner:
sidecar_image: "eginotebooks/oneclient-sidecar:sha-dd3068b"
force_direct_io: true
oneclient_extra_args:
- -o
- allow_other
http_timeout: 60
JupyterHub:
admin_access: true
# redirect_to_server: false
authenticator_class: egi_notebooks_hub.egiauthenticator.EGICheckinAuthenticator
log_level: 'DEBUG'
# do not use EGI spawner for the binder here:
# spawner_class: egi_notebooks_hub.egispawner.EGISpawner
extraConfig:
1-datahub: |
from egi_notebooks_hub.onedata import OnedataSpawner
class OnedataBinderSpawner(BinderSpawnerMixin, OnedataSpawner):
pass
c.JupyterHub.spawner_class = OnedataBinderSpawner
extraFiles:
login.html:
mountPath: /templates/login.html
stringData: |-
{% raw -%}
{% extends "egi-login.html" %}
{% block nav_bar_right_items %}
<li>
<span id="user-guide">
<a role="button" class="navbar-btn btn-sm btn btn-egi" href="https://docs.egi.eu/users/dev-env/replay/">
<i aria-hidden="true" class="fa fa-book"></i> User Guide</a>
</span>
</li>
{% endblock %}
{% block main_intro %}
<h1>
<img alt="Replay Logo" src="{{ static_url('images/egi-icon-replay.svg') }}" height="100">
Replay
</h1>
<p>
Replay offers an easy place to reproduce and share notebooks.
It allows users to replay complex calculations, simulations, and
visualisations scenarios by importing Notebooks and their runtime
environment and share them with a single link. Replay works well with
<a href="https://notebooks.egi.eu">EGI Notebooks</a>:
use-cases include workshops, scientific workflows and streamline sharing
among teams.
</p>
<p>
Access requires a valid <a href="https://docs.egi.eu/users/aai/check-in/signup/">EGI account</a>
and <a href="https://aai.egi.eu/registry/co_petitions/start/coef:111">enrolling
to the vo.notebooks.egi.eu VO</a>.
</p>
<p>
Default environment provides up to 4 CPU cores and 6 GB RAM per user.
</p>
{% endblock main_intro %}
{% block main_outro %}
<p>
Replay is based on <a href="https://jupyter.org/binder">Jupyter Binder</a> and runs on
the <a href="https://www.egi.eu/services/cloud-compute/">EGI cloud service</a>. You
can learn more at our <a href="https://docs.egi.eu/users/dev-env/binder/">documentation</a>.
</p>
<p>
This Replay instance is operated by and uses resources from
<a href="https://www.cesnet.cz/?lang=en">CESNET</a>.
User communities/advanced users can have their customised Binder
instance. EGI offers consultancy and support, as well as can operate the setup.
Email support _at_ egi.eu to request a community instance.
</p>
{% endblock main_outro %}
{%- endraw %}
egi-icon-replay.svg:
mountPath: /usr/local/share/jupyterhub/static/images/egi-icon-replay.svg
stringData: |-
{{ lookup('file', 'files/egi-icon-replay.svg') | indent(width=10) }}
templatePaths:
- /templates
- /egi-notebooks-hub/templates
templateVars:
service_name: "Replay"
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
hosts:
- {{ binder_hostname }}
tls:
- hosts:
- {{ binder_hostname }}
secretName: acme-tls-binder
proxy:
service:
type: NodePort
singleuser:
# to make notebook servers aware of hub (needed for user token refresh)
cmd: jupyterhub-singleuser
cull:
timeout: 7200
every: 300
debug:
enabled: true
registry:
url: "https://{{ registry_binder_hostname }}"
# keep in sync with playbooks/templates/nexus/user-*.yaml
username: binder
password: "{{ nexus_secrets['binder'] }}"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment